@Autowired 说不推荐现场注入

Wiz*_*ard 3 java javabeans autowired spring-boot

谁能告诉我为什么@autowired 说不推荐字段注入,并且 TextWriter 对象“text”也说它不能自动装配,因为有不止一个 textwriter 类型的 bean。我的代码。

dav*_*xxx 5

谁能告诉我为什么@autowired 说不推荐字段注入?

出于设计原因。将 bean 直接注入字段会使您的依赖项“隐藏”并鼓励不良设计:

  • 类 API(公共/受保护成员)在它们存在时不会指定它们。
  • 没有反射或 Spring 容器就无法进行单元测试(对我来说最重要的部分)
  • 您可以通过声明潜在的许多注入字段来结束。这可能会使您的类与其他类具有很强的耦合性,而您却“真正”意识到这一点。

通常,@Autowired如果字段很少,则应该使用构造函数注入(从 Spring 4 开始就不需要注释构造函数),否则应该使用 setter。
两种方式都没有上面提到的所有缺点。

  • 所以你通过构造函数注入 Spring 类调用的服务??!! ```java public class MyClass { private Service1 service1; 私人服务2 服务2;私人服务3 服务3;私人服务4 服务4;私人服务5 服务5;私人服务6 服务6;public MyClass(Service1 service1, Service2 service2, Service3 service3, Service4 service4, Service5 service5, Service6 service6) { this.service1 = service1; this.service2 = 服务2; this.service3 = 服务3; this.service4 = 服务4; this.service5 = 服务5; this.service6 = 服务6; } } ``` (2认同)

归档时间:

查看次数:

6183 次

最近记录:

5 年,5 月 前