【问题标题】:Spring bean initializing dependencies with new keyword?Spring bean使用新关键字初始化依赖项?
【发布时间】:2015-07-08 21:51:09
【问题描述】:

我有一些遗留代码,其中类是通过 xml 定义和初始化的 Spring bean。它是一个带有字段成员的单例,它是一个类依赖项。它有一个 setter 方法,所以我假设它应该通过 Spring 设置,尽管我没有找到任何定义它的 xml。依赖项还有一个 get() 方法,它有一个空检查,如果它为空,它会像这样在 Spring 之外手动创建它

Class Test{
    Dependency d;

    setD(Dependency d){this.d=d;}

    getD(){
        if(this.d==null){
            this.d = new Dependency();
        }return this.d
     }
}

我试图理解为什么这个 Spring bean 会在 Spring 之外初始化一个依赖项,如果有的话,会有什么影响,这只是坏/旧的设计吗?还是我不了解 Spring 的工作原理。

【问题讨论】:

    标签: java spring dependency-injection


    【解决方案1】:

    我会说这是一个糟糕的设计,可能作者想为春季没有注入 D 的情况提供后备。另一个想法是尝试使 D 成为惰性依赖项。你应该探索一下 D 里面的东西。

    通常你可以使用@Required 来标记那些总是应该被注入的成员。或者只是使用简单而漂亮的构造函数注入。如果您担心惰性注入,那是 Spring 默认的工作方式。

    【讨论】:

      猜你喜欢
      • 2013-07-08
      • 2014-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-15
      • 2020-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多