目录
集合注入
注入数组类型数据
<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, 都是线程不安全的。