首页 >Java >java教程 >为什么我应该避免在 Spring 进行字段注入?

为什么我应该避免在 Spring 进行字段注入?

DDD
DDD原创
2024-12-08 16:26:111027浏览

Why Should I Avoid Field Injection in Spring?

理解字段注入及其避免

字段注入,如下例所示,当在 bean 的字段上直接注入 @Autowired 时,就会出现字段注入:

@Component
public class MyComponent {
    @Autowired
    private Cart cart;
}

相反,构造函数注入(如下例所示)涉及通过构造函数:

@Component
public class MyComponent {
    private final Cart cart;

    @Autowired
    public MyComponent(Cart cart){
       this.cart = cart;
    }
}

注入指南

一般情况下,Spring推荐以下注入实践:

  • 使用构造函数注入进行强制依赖或不变性。
  • 使用 setter 注入来实现可选或可更改
  • 在大多数情况下避免字段注入。

字段注入的缺点

字段注入有几个缺点:

  • 不变性:它阻止创建不可变对象。
  • 耦合:类与 DI 容器紧密绑定,阻碍在其外部使用。
  • 实例化:字段注入需要一个DI容器来实例化,限制了它在单元中的使用测试。
  • 依赖关系模糊: 依赖关系保持隐藏,掩盖了真正的依赖关系。
  • 过多的依赖关系计数: 字段注入可以添加过多的依赖关系很容易,可能违反单一责任原理。

结论

根据需求,主要使用构造函数注入或构造函数和setter注入的组合。现场注入的缺点超过了它的便利性,因此通常不建议使用。

以上是为什么我应该避免在 Spring 进行字段注入?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn