谁能告诉我为什么 @autowired 说不建议进行字段注入,并且 TextWriter 对象“文本”也说它无法自动装配,因为有多个文本编写器类型的 bean。
@RestController
public class HelloWorld{
@Autowired
TextWriter text
public HelloWorld(TextWriter text){
this.text = text;
}
@RequestMapping("/")
public String index(){
return "Hello World";
}
}
谁能告诉我为什么@autowired 说字段注入不是
受到推崇的 ?
出于设计原因。将 beans 直接注入字段会使您的依赖项“隐藏”并鼓励不良设计:
- 类 API(公共/受保护成员)在它们存在时不会指定它们。
- 没有反射或 Spring 容器就无法进行单元测试(对我来说最重要的部分)
- 您可以通过声明潜在的许多注入字段来结束。这可能会使您的类与其他类具有很强的耦合性,而您却“真正”没有意识到这一点。
一般来说,构造函数注入应该受到青睐(不需要用注释构造函数@Autowired
从 Spring 4 开始,如果字段很少,则应该使用 setter 方法。
这两种方法都不具有上述所有缺点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)