1.各自适用的情况
1. 1@Required 用于setter方法的注入;
1.2 @Autowired可以用于构造方法、方法、属性注入。
构造方法注入:
@Autowired // 此处可以省去Autowired不写,并不影响注入
public FaultController(FaultService faultService) {
this.faultService = faultService;
}
方法/setter方法注入:
@Autowired
public void init(FaultService faultService) {
this.faultService = faultService;
}
// 或者
@Required
public void setFaultService(FaultService faultService) {
this.faultService = faultService;
}
属性注入
@Autowired
private FaultService faultService;
2.最佳实践(具体问题具体分析)
并没有哪一种注入方式是最好的,根据实际情况选择合适的注入方式就是最好的。
具体来说:
a. 构造方法注入适合那些必须要依赖的对象的注入。
b. setter方法注入适合那些可选择性的依赖对象的注入,即可人为选择要不要注入。
c.属性注入是一般不推荐的注入方式,虽然它写起来很是方便。