Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Springbean是否使用新关键字初始化依赖项?_Java_Spring_Dependency Injection - Fatal编程技术网

Java Springbean是否使用新关键字初始化依赖项?

Java Springbean是否使用新关键字初始化依赖项?,java,spring,dependency-injection,Java,Spring,Dependency Injection,我有一些遗留代码,其中类是通过xml定义和初始化的Springbean。它是一个带有字段成员的单例,字段成员是类依赖项。它有一个setter方法,所以我假设它应该通过Spring进行设置,尽管我没有找到任何定义它的xml。依赖项还有一个get()方法,它有一个null检查,如果为null,它会在Spring之外手动创建它,就像这样 Class Test{ Dependency d; setD(Dependency d){this.d=d;} getD(){

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

Class Test{
    Dependency d;

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

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

我试图理解为什么这个Springbean在Spring之外初始化一个依赖项,如果有的话,它的含义是什么,这只是一个坏的/旧的设计吗?或者我不了解Spring的工作原理。

我会说这是一个糟糕的设计,可能作者想为Spring中没有注入D的情况提供退步。另一个想法是试图使D成为一个懒惰的依赖项。你应该探索D里面的东西

通常,您可以使用@Required标记始终应注入的成员。或者只是使用简单而好的构造函数注入。如果您关心惰性注入,那么Spring默认情况下就是这样工作的