11.25 Spring-自动装配,生命周期

目录

集合注入

自动装配类型

IOC 容器对 Bean 的生命周期

Spring容器中的实例化bean范围

Spring中的Bean是线程安全的吗


集合注入

注入数组类型数据

<property name="array">
    <array>
        <value>100</value>
        <value>200</value>
        <value>300</value>
    </array>
</property>

注入List类型数据

<property name="list">
    <list>
        <value>itcast</value>
        <value>itheima</value>
        <value>boxuegu</value>
        <value>chuanzhihui</value>
    </list>
</property>

注入Set类型数据

<property name="set">
    <set>
        <value>itcast</value>
        <value>itheima</value>
        <value>boxuegu</value>
        <value>boxuegu</value>
    </set>
</property>

注入Map类型数据

<property name="map">
    <map>
        <entry key="country" value="china"/>
        <entry key="province" value="henan"/>
        <entry key="city" value="kaifeng"/>
    </map>
</property>

注入Properties类型数据

<property name="properties">
    <props>
        <prop key="country">china</prop>
        <prop key="province">henan</prop>
        <prop key="city">kaifeng</prop>
    </props>
</property>

自动装配类型

依赖自动装配特征

1. 自动装配用于引用类型依赖注入,不能对简单类型进行操作

2. 使用按类型装配时(byType)必须保障容器中相同类型的bean唯一,推荐使用

3. 使用按名称装配时(byName)必须保障容器中具有指定名称的bean,因变量名与配置耦合,不推荐使用

4. 自动装配优先级低于setter注入与构造器注入,同时出现时自动装配配置失效

<bean id="city" class="com.ucloud.spring01.demo05.City"></bean>
<bean id="stu" class="com.ucloud.spring01.demo05.Student" autowire="byType"></bean>
public class Student {

    City city;

    public City getCity() {
        return city;
    }

    public void setCity(City city) {
        this.city = city;
    }
}

IOC 容器对 Bean 的生命周期

①. 通过构造器或工厂方法创建 Bean 实例(构造方法)

②. 为 Bean 的属性设置值和对其他 Bean 的引用 setXXX(依赖注入)

③ . 将 Bean 实 例 传 递 给 Bean 后 置 处 理 器 的 postProcessBeforeInitialization 方 法

④. 调用 Bean 的初始化方法(init-method)

⑤ . 将 Bean 实 例 传 递 给 Bean 后 置 处 理 器 的 postProcessAfterInitialization 方法

⑦. Bean 可以使用了

⑧. 当容器关闭时, 调用 Bean 的销毁方法(destroy-method)

Bean ->构造方法->依赖注入(setXX)->init-method

Spring容器中的实例化bean范围

(1) singleton :默认,每个容器中只有一个bean的实例

(2) prototype :为每- -个bean请求提供一个实例

<--name为起的别名-->
 <bean id="person" name="p1,p2" class="com.ucloud.spring01.Person" scope="singleton"
        init-method="init" destroy-method="destory">
        <property name="name" value="tom"></property>
        <property name="sex" value="男"></property>
        <property name="address" ref="addr"></property>
</bean>

Spring中的Bean是线程安全的吗

答案是否定的,绝对不可能是线程安全的,spring bean 默认来说,singleton, 都是线程不安全的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值