相较于传统的依赖注入,依赖注入框架有哪些优势?

问题描述

我正在努力了解使用依赖注入框架(在Jakarta EE上下文中为CDI)的好处。

我认为我看到了依赖注入的标准用例的要点-“分解”实例变量的具体实例通常是有益的,因此

public class Car {
    private Tyre tyre;

    public Car() {
        tyre = new Tyre();
    }
}

成为

public class Car {
    private Tyre tyre;

    public Car(Tyre tyre) {
        this.tyre = tyre;
    }
}

这样做的好处是,现在我们可以插入所需的任何轮胎,这对于单元测试非常方便,例如,轮胎可能难以实例化。

现在,我正在苦苦挣扎的地方,而且我认为许多教程和问题都比较薄的地方是如何将其与依赖项注入框架联系起来。当然,我的示例现在将显示为(使用CDI时)

public class Car {
    private Tyre tyre;

    @Inject
    public Car(Tyre tyre) {
        this.tyre = tyre;
    }
}

但是我不明白为什么在这个阶段我获得了什么。我知道您可能有多个Tyre接口的实现,但是然后您必须在注入的顶部放置另一个注释,以告诉框架插入了哪个轮胎……这比仅放置轮胎更好。签名中具体实现了吗?

总结了我目前的知识和思想之后,我的问题基本上是以下进展的婴儿例子:

  1. 没有依赖项注入并且有问题的代码
  2. 具有依赖项注入的相同代码可以解决部分但不是全部问题
  3. 相同的代码具有依赖项注入框架(最好是CDI),可以解决所有问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)