Spring利用依赖注入(DI),完成对IOC容器中中各个对象的依赖关系赋值;
具体注入规则如下:
- 默认优先按照类型去容器中找对应的对象;
applicationContext.getBean(UserDao.class);
- 如果找到多个相同类型的组件,再将属性的名称作为组件的id去容器中查找;
applicationContext.getBean("userDao")
- 使用
@Qualifier
可以指定需要装配的组件的id,而不是使用属性名;
@Qualifier("bookDao")
- 自动装配默认一定要将属性赋值好,没有就会报错,如果不需要赋值可以使用
required
属性;
@Autowired(required=false)
- 使用
@Primary
让Spring进行自动装配的时候,默认使用首选的bean;
@Primary
只需要使用注解,标注该对象需要由容器依赖注入,Spring容器就会完成相关依赖对象的创建及赋值的操作。
UserService{
@Autowired
UserDao userDao;
}
Spring支持三种类型的注解:
- Spring规范的
Autowired
- JSR250规范的
Resource
默认是按照组件名称进行装配的;
没有能支持@Primary功能;
没有支持@Autowired(reqiured=false); - JSR330规范的
Inject
需要导入javax.inject的包;
没有required=false的功能;
备注
可以通过继承Spring的Aware接口,为对象注入Spring容器上下文中的对象,Spring提供了以下的Aware接口:
Spring通过后置处理器
BeanPostProcessor
,在容器初始化的过程中,对继承了这些接口的对象注入依赖的对象。
网友评论