Spring——Bean的自动装配
-
自动装配是Spring满足bean依赖的一种方式
-
Spring会在上下文中自动寻找,并自动给bean装配属性
在Spring中有三种自动装配的方式
-
在xml中显式的配置
-
在Java中显式配置
-
隐式自动装配
7.1 测试
1.环境搭建
-
一个人有一只猫和一只狗
public class Person {
private Cat cat;
private Dog dog;
private String name;
} -
xml配置
<bean id="cat" class="com.yl.pojo.Cat"/>
<bean id="dog" class="com.yl.pojo.Dog"/>
<bean id="person" class="com.yl.pojo.Person">
<property name="name" value="lulu"/>
<property name="cat" ref="cat"/>
<property name="dog" ref="dog"/>
</bean>
7.2ByName自动装配
<bean id="cat" class="com.yl.pojo.Cat"/>
<bean id="dog" class="com.yl.pojo.Dog"/>
<!--
byName:会自动在容器上下文中查找,和自己对象set方法后面的值对应的beanId
-->
<bean id="person" class="com.yl.pojo.Person" autowire="byName">
<property name="name" value="lulu"/>
</bean>
7.3 ByType自动装配
<bean id="cat" class="com.yl.pojo.Cat"/>
<bean id="dog" class="com.yl.pojo.Dog"/>
<!--
byType:会自动在容器上下文中查找,和自己对象属性类型相同的beanId,注意:保证类型全局唯一
-->
<bean id="person" class="com.yl.pojo.Person" autowire="byType">
<property name="name" value="lulu"/>
</bean>
注意:
-
byName的时候,需要保证所有bean的id唯一,并且这个bean的id需要和自动注入的属性的set方法的值一致
-
byType的时候,需要保证所有bean的class唯一,并且这个bean需要和自动注入的属性类型一致
7.4使用注解自动装配
使用注解:
-
导入约束:context约束
-
配置注解的支持
@Autowired
直接在属性上(或set方法上)使用即可
使用Autowired可以不用写Set方法,前提式自动装配的属性在IOC容器中存在,先按byType匹配,后按byName匹配。
如果需要byName,则需要在@Autowired下添加@Qualifier
扩充:
-
如果字段标记了@Nullable,说明这个字段可以为null
public Person(
-
@Resource(value="xxx")注解,相当于整合了@Autowired和@Qualifier,先按byName匹配,后按byType匹配
浙公网安备 33010602011771号