Spring 自动装配
Spring中的自动装配
配置中使用bean标签的autowire属性设置
<bean id="cat" class="com.xxx.cat" autowire="byType"/>
autowire取值:byType, byName
注意:
- 需要提供setter方法才能自动装配;
- 自动装配用于引用类型的依赖注入,不能对简单类型进行操作;
- 使用按类型装配时(byType)必须保障容器中相同类型的bean唯一,推荐使用;
- 使用按名称装配时(byName)必须保障容器中具有指定名称的bean,因变量名和配置耦合,不推荐使用;
- 自动装配优先级低于setter注入与构造器注入,同时出现时自动装配失效。
使用注解的方式通过@Autowired 实现。
@Autowired:注入引用类型,自动装配模式,默认按类型装配,按类型注入不成功,就会按名注入
@Qualifier(value):自动装配bean时按bean名称(value)装配
注意:
- 注解自动装配是基于反射设计创建对象并暴力反射对应属性,为私有属性初始化数据,因此无需提供setter方法。
- 注解自动装配建议使用无参构造方法创建对象(默认), 如果不提供对应构造方法,请提供唯一的构造方法。
@Value简单类型注入
@Repository("bookDao")
public class BookDaoImpl implements BookDao {
//@Value:注入简单类型(无需提供set方法)
@Value("book1")
private String name;
}
@Value的值可以从外部配置文件中加载