依赖的自动装配
依赖的自动装配
IoC容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称为自动装配。
自动装配方式
- 按类型(常用)
- 按名称
- 按构造方法(不常用)
- 不启用自动装配
public class BookServiceImpl implements BookService {
private BookDao bookDao;
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
@Override
public void save() {
System.out.println("book service save...");
bookDao.save();
}
}
<?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 http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="bookDao" class="com.charley.dao.impl.BookDaoImpl"/>
<!--按类型匹配 bean的id名都可以省略-->
<bean id="bookService" class="com.charley.service.impl.BookServiceImpl" autowire="byType"/>
<!--按名字匹配,是按照setBookDao方法转换的名字bookDao和bean的id匹配-->
<bean id="bookService" class="com.charley.service.impl.BookServiceImpl" autowire="byName"/>
</beans>
依赖自动装配特征
- 自动装配用于引用类型依赖注入,不能对简单类型进行操作
- 使用按类型装配时(byType)必须保障容器中相同类型的bean唯一,推荐使用
- 使用按名称装配时(byName)必须保障容器中具有指定名称的bean,因变量名与配置耦合,不推荐使用
- 自动装配优先级低于setter注入与构造器注入,自动装配和setter注入或构造器同时出现自动装配配置失效