首页 > Java > java教程 > 为什么在 Spring 依赖注入中要避免字段注入?

为什么在 Spring 依赖注入中要避免字段注入?

Linda Hamilton
发布: 2024-12-27 14:28:10
原创
968 人浏览过

Why Should Field Injection Be Avoided in Spring Dependency Injection?

字段注入及其危害

字段注入(即通过字段上的 @Autowired 注释注入 Bean)通常不被鼓励。要描述这一点,请考虑以下内容:

@Component
public class MyComponent {
    @Autowired
    private Cart cart;
}
登录后复制

或者,构造函数注入采用以下方法:

@Component
public class MyComponent {
    private final Cart cart;

    @Autowired
    public MyComponent(Cart cart){
       this.cart = cart;
    }
}
登录后复制

注入技术

那里主要有以下三个依赖注入方法:

  • 构造函数注入:通过构造函数注入。
  • 方法注入:通过setter或其他方法注入。
  • 字段注入:使用直接注入到字段中

字段注入,如第一个示例所示,对应第三个选项。

注入指南

Spring 提倡遵循注射指南:

  • 强制依赖项:利用构造函数注入。
  • 可选或可更改的依赖项:使用setter注入。
  • 避免字段注入:仅在以下情况下使用它特殊场景。

Field 的缺点注入

不鼓励字段注入有几个原因:

  • 不可变对象:构造函数注入有助于创建不可变对象,而字段注入则不然
  • 紧耦合: 紧密的字段注入将类与 DI 容器耦合,阻碍其独立使用。
  • 实例化挑战:没有反射和 DI 容器,类无法实例化,阻碍单元测试能力。
  • 隐藏依赖:字段注入隐藏了依赖,使得很难辨别类对外部的依赖
  • 多重依赖:字段注入可以不受约束地积累依赖。
  • 责任违规:处理多个职责的类通常会表现出过度的依赖,可能违反单一责任原理。

结论

构造函数和setter注入应根据需求确定优先级。由于现场注射的缺点,一般应避免,而方便是其唯一的优点。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板