1.引入
在之前遇到含有对象类型的属性时,我们常常通过ref来完成装配,如下:
<bean id="address" class="com.sun.pojo.Address" p:address="西安"/>
<bean id="people" class="com.sun.pojo.People">
<property name="name" value="小明"/>
<property name="address" ref="address"/>
</bean>
2.自动装配
现在通过aotuwire属性可以完成自动装配,如下:
<bean id="address" class="com.sun.pojo.Address" p:address="西安"/>
<bean id="people" class="com.sun.pojo.People" autowire="byName">
<property name="name" value="小明"/>
</bean>
autowire属性:
- byName:通过set方法后面的名字自动和bean的id进行匹配
上面画红色方框的名字会自动匹配,来完成bean的自动装配
还有一种是通过byType属性值来完成自动装配,如下:
<bean id="address" class="com.sun.pojo.Address">
<property name="address" value="西安"/>
</bean>
<bean id="people" class="com.sun.pojo.People" autowire="byType">
<property name="name" value="小明"/>
</bean>
aotuwire属性:
- byType:会自动查找和自己属性类型相同的bean
上面画红色方框的名字会自动匹配,来完成bean的自动装配
3.使用注解实现自动装配
3.1.基本配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config/>
</beans>
3.2.使用注解
3.3.注意
@Autowired本质还是byType和byName这两个属性,它要高级的地方在于,这个注解会先根据byType来匹配,如果有相同类型的bean,则再根据byName来匹配,如下:
对象类型:
bean的配置:
使用注解之后,会先根据byType来匹配,但是上面同时存在相同类型的bean,因此再使用byName来匹配,对象名叫做address2,所以会匹配id为address2的bean,最终结果如下:
当类型重复时,此时有一个注解可以使@Autowired来匹配指定的bean
@Qualifier指定@Autowired来匹配id叫做address的bean,最终结果如下: