Spring bean用new关键字初始化依赖关系?

时间:2015-07-08 21:51:09

标签: java spring dependency-injection

我有一些遗留代码,其中类是通过xml定义和初始化的Spring bean。它是一个具有字段成员的单例,它是一个类依赖项。有一个setter方法,所以我假设它应该通过Spring设置,虽然我没有找到任何定义它的xml。还有一个依赖的get()方法,它有一个空检查,如果它是null,它会在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的工作原理。

1 个答案:

答案 0 :(得分:0)

我会说这是一个糟糕的设计,可能是作者希望在D没有在春天注入的情况下提供回落。另一个想法是试图使D成为一个懒惰的依赖。你应该探索D中的内容。

通常,您可以使用@Required标记始终应注入的成员。或者只是使用简单而精美的构造函数注入。如果你担心懒惰注射,那就是Spring的默认工作方式。