文章目录
来看下面几个问题
- Spring为什么不推荐使用@Autowired 注解?
- 为什么推荐使用@Resource 代替 @Autowired 注解?
- 如何快速使用构造注入代替 @Autowired ?
- @Autowired, @Qualifier, @Resource, 三者有何区别?
Spring为什么不推荐使用@Autowired 注解
背景
Field 注入
@Controller
public class HelloController {
@Autowired
private AlphaService alphaService;
@Autowired
private BetaService betaService;
}
field 注入方式是使用最多的,原因是这种方式使用起来非常简单,代码更加简洁。
Setter 方法注入
@Controller
public class HelloController {
private AlphaService alphaService;
private BetaService betaService;
@Autowired
public void setAlphaService(AlphaService alphaService) {
this.alphaService = alphaService;
}
@Autowired
public void setBetaService(BetaService betaService) {
this.betaService = betaService;
}
}
在 Spring 3.x 刚推出的时候,Spring 官方在对比构造器注入和 Setter 注入时,推荐使用 Setter 方法注入: