Spring不建议使用字段注入主要是因为它破坏了封装性和可测试性。
具体来说,字段注入将依赖关系硬编码到了类的属性上,这使得代码变得更加脆弱和难以维护。此外,字段注入使得类的状态变得不可控,因为它们的依赖关系是在实例化后自动注入的,而不是显式地声明和传递。
相反,Spring建议使用构造函数注入或setter方法注入来处理依赖关系。这种方式可以使依赖关系更加明确和可控,同时也更容易进行单元测试和模拟。
以下是一个使用字段注入的例子:
@Service
public class MyService {
@Autowired
private MyRepository myRepository;
public void doSomething() {
// use myRepository
}
}
以下是使用构造函数注入的相同例子:
@Service
public class MyService {
private MyRepository myRepository;
@Autowired
public MyService(MyRepository myRepository) {
this.myRepository = myRepository;
}
public void doSomething() {
// use myRepository
}
}
这里是一些关于Spring不建议使用字段注入的链接: