IMOOC个人笔记 Spring的Bean管理

Spring的Bean管理(XML方式):

<!--开启注解扫描=======================-->
<context:component-scan base-package="com.imooc"/>

在这里插入图片描述在这里插入图片描述
Bean的作用域:
例:
在这里插入图片描述Spring容器中Bean生命周期的配置
在这里插入图片描述
Bean的完整生命周期:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

Spring的属性注入:

对于类成员变量,注入方式有三种
–构造函数注入
–属性setter方法注入
–接口注入
Spring支持前两种

构造方法的属性注入:

<bean id="user" class="com.imooc.ioc.demo4.User">
        <constructor-arg name="name" value="张三" />
        <constructor-arg name="age" value="23"/>
</bean>

set方法的属性注入:

<bean id="person" class="com.imooc.ioc.demo4.Person">
        <property name="name" value="李四"/>
        <property name="age" value="32"/>
        <--实体类-->
        <property name="cat" ref="cat"/>
    </bean>
	<--实体类-->
    <bean id="cat" class="com.imooc.ioc.demo4.Cat">
        <property name="name" value="ketty"/>
    </bean>

实际开发中更习惯于使用set方法注入

Bean的p名称空间的属性注入:

<!--Bean的p名称空间的属性注入==============================-->
    <bean id="person" class="com.imooc.ioc.demo4.Person" p:name="大黄" p:age="34" p:cat-ref="cat"/>

    <bean id="cat" class="com.imooc.ioc.demo4.Cat" p:name="小黄"/>

Spring的属性注入-SpEL注入
在这里插入图片描述

`    <!--Bean的SpEL的属性注入==============================-->
    <bean id="category" class="com.imooc.ioc.demo4.Category">
        <property name="name" value="#{'服装'}"/>
    </bean>

    <bean id="productInfo" class="com.imooc.ioc.demo4.ProductInfo"/>

    <bean id="product" class="com.imooc.ioc.demo4.Product">
        <property name="name" value="#{'男装'}"/>
        <property name="price" value="#{productInfo.calculatePrice()}"/>
        <property name="category" value="#{category}"/>
    </bean>`
public class ProductInfo {

    public Double calculatePrice(){
        return Math.random() * 199;
    }
}

复杂类型的属性注入

<!--集合类型的属性注入=================================-->
    <bean id="collectionBean" class="com.imooc.ioc.demo5.CollectionBean">
        <!--数组类型-->
        <property name="arrs">
            <list>
                <value>aaa</value>
                <value>bbb</value>
                <value>ccc</value>
            </list>
        </property>
        <!--List集合的属性注入-->
        <property name="list">
            <list>
                <value>111</value>
                <value>222</value>
                <value>333</value>
            </list>
        </property>
        <!--Set集合的属性注入-->
        <property name="set">
            <set>
                <value>ddd</value>
                <value>eee</value>
                <value>fff</value>
            </set>
        </property>
        <!--Map集合的属性注入-->
        <property name="map">
            <map>
                <entry key="aaa" value="111"/>
                <entry key="bbb" value="222"/>
                <entry key="ccc" value="333"/>
            </map>
        </property>
        <!--Properties的属性注入-->
        <property name="properties">
            <props>
                <prop key="username">root</prop>
                <prop key="password">1234</prop>
            </props>
        </property>
    </bean>

Spring的Bean管理(注解方式):
传统方式需要去XML中配置

在这里插入图片描述在这里插入图片描述另外还有一个@Resource注解
Spring提供对JSR25中定义@Resource标准注解的支持
@Resource 相当于@Autowired+@Qualifier 和@Autowired注解功能相似但也会强制按照名称去注入

在这里插入图片描述

XML和注解整合开发
在这里插入图片描述<context:component-scan base-package=“com.imooc”/>:包扫描
context:annotation-config/:单独使用属性注入注解,开启包扫描的时候,这个也会同时被开启。

例:纯XML方式

public class ProductService {

    private CategoryDao categoryDao;

    private ProductDao productDao;        
}

XML:

    <bean id="productService" class="com.imooc.demo3.ProductService">
       <property name="productDao" ref="productDao"/>
        <property name="categoryDao" ref="categoryDao"/>
    </bean>
    
    <bean id="productDao" class="com.imooc.demo3.ProductDao"/>

    <bean id="categoryDao" class="com.imooc.demo3.CategoryDao"/>

整合开发: XML只管理类,属性注入使用注解方式

public class ProductService {
    @Resource(name="categoryDao")
    private CategoryDao categoryDao;

    @Resource(name="productDao")
    private ProductDao productDao;
}

XML:

    <bean id="productService" class="com.imooc.demo3.ProductService">
       
    </bean>

    <bean id="productDao" class="com.imooc.demo3.ProductDao"/>

    <bean id="categoryDao" class="com.imooc.demo3.CategoryDao"/> 

猜你喜欢

转载自blog.csdn.net/weixin_41992953/article/details/86307271