我有一些遗留代码,其中类是通过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的工作原理。
答案 0 :(得分:0)
我会说这是一个糟糕的设计,可能是作者希望在D没有在春天注入的情况下提供回落。另一个想法是试图使D成为一个懒惰的依赖。你应该探索D中的内容。
通常,您可以使用@Required标记始终应注入的成员。或者只是使用简单而精美的构造函数注入。如果你担心懒惰注射,那就是Spring的默认工作方式。