java - 3种依赖注入(inject)方式之间有什么区别?

标签 java dependency-injection cdi

第 3 种最常见的注入(inject) bean 的方法是什么?它们之间有什么区别吗?

  1. Bean构造函数参数注入(inject):

     public class Checkout {
        private final ShoppingCart cart;
    
        @Inject
        public Checkout(ShoppingCart cart) {
          this.cart = cart;
        }
    }
    
  2. 初始化方法参数注入(inject):

    public class Checkout {
    
       private ShoppingCart cart;
    
       @Inject
       void setShoppingCart(ShoppingCart cart) {
          this.cart = cart;
       }
    }
    
  3. 字段注入(inject):

    public class Checkout {
       private @Inject ShoppingCart cart;
    }
    

最佳答案

基于意见的答案,但由于以下原因,似乎通过构造函数注入(inject)是最好的。

  • 您可以在构造函数中进行空检查,这可能会为您在类的其他地方节省一些错误处理。
  • 您可以更轻松地将模拟注入(inject)到您的类中以进行测试。
  • 您不能忘记提供依赖项。
  • 它看起来不像魔法。

关于java - 3种依赖注入(inject)方式之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39311970/

相关文章:

java - Java从URL中读取数据

java - 运行时的 Spring @Qualifier 值

dependency-injection - Ninject:使用 Ninject 注册已创建的实例?

java - 如何注入(inject)存在于另一个类加载器中的 CDI 托管 Bean

jakarta-ee - CDI 与 @Produces 的不明确依赖 - 为什么?

java - 用 Java 打印 - 介质尺寸被忽略

Java函数重载

java - 如何获取 View 的父 fragment : 的实例

javascript - 从另一个模块注入(inject)nestjs服务

ejb - 在 EJB 方法/@RequestScoped 和 @Stateless 之间传递状态