哪些地方可以使用@AutoWired
Spring @AutoWired注解可以用在类的任何方法上:
- 构造器
- Setter方法
- 其他方法。
不管是构造器、Setter方法还是其他方法,Spring都会尝试满足方法参数上所声明的依赖。假如有且只有一个bean匹配依赖需求的话,那么这个bean将会被装配进来。
异常情况
-
无匹配bean
如果没有匹配的bean,那么在应用上下文创建的时候,Spring会抛出一个异常。为了避免异常出现,可以将@Autowired的required属性设置为false:
@Autowired(required=false)
public CDPlayer(CompactDisc cd) {
this.cd = cd;
}
将required属性设置为false时,Spring会尝试执行自动装配,但是如果没有匹配的bean的话,Spring将会让这个bean处于未装配的状态。但是,把required设置为false时你需要谨慎对待。如果在你的代码中没有进行null检查的话,这个处于未装配的属性有可能会出现NullPointerException。
-
多个匹配
如果多个bean都能满足依赖关系的话,Spring将会抛出一个异常,表明没有明确制定要选哪个bean进行自动装配。所以此时需要消除歧义性。