1.含义:自动寻找bean对象进行装配
2.自动装配方式
2.1 配置文件
2.1.1 byName
在容器上下文中查找与set方法后面的内容相同的id的bean对象
(bean的id需要唯一)
<bean id="person" class="com.qq.test3.Person" autowire="byName">
<property name="name" value="CXK"/>
</bean>
2.1.2 byType
在容器上下文中查找与属性类型相同的bean对象
(bean的class需要唯一)
<bean id="person" class="com.qq.test3.Person" autowire="byType">
<property name="name" value="CXK"/>
</bean>
配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="sport" class="com.qq.test3.Sport">
<property name="name" value="badminton"/>
</bean>
<bean id="movie" class="com.qq.test3.Movie">
<property name="name" value="肖申克的救赎"/>
</bean>
<bean id="person" class="com.qq.test3.Person" autowire="byName">
<property name="name" value="CXK"/>
</bean>
</beans>
2.2 使用注解的自动装配
2.2.1 实现步骤
(1)导入约束
<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">
(2)开启注解支持
<context:annotation-config/>
(3)加入 @Autowired 到相关属性上,不需要set方法支持。
private String name;
@Autowired
private Sport sport;
@Autowired
private Movie movie;
2.2.2 @Autowired扩展
(1)qualifier指定bean id
@Autowired
@Qualifier(value ="sport1")
private Sport sport;
(2)某种程度上,resource可替代autowired
@Resource(value = "sport1")
private Sport sport;
区别:
autowired通过byName方式实现;
resource默认通过byName方式实现,如果找不到Name,则通过byType实现。
(3)Nullable 标记说明这个字段可以为空
public class SimpleMovieLister {
@Autowired
public void setMovieFinder(@Nullable MovieFinder movieFinder) {
...
}
}