Ana*_*Ana 5 java spring dependency-injection inject lazy-initialization
如何延迟初始化@Inject的依赖项?
public class ClassA {
@Inject
ClassB classB;
}
@Configuration
public class Config {
@Bean
public ClassA classA() {
return new ClassA();
}
@Bean
@Lazy
public ClassB classB() {
return new ClassB();
}
}
Run Code Online (Sandbox Code Playgroud)
实例化classA bean时,尽管有@Lazy批注,classB bean也被实例化。如何避免classB bean实例化?
你真的不能那样做。正如 Sotirios 所说,Spring 需要实例化它才能将其注入到ClassA. 您可能可以使用应用程序上下文手动完成此操作。就像是 :
public class ClassA {
@Inject
private ApplicationContext appContext;
private ClassB classB;
//Bean will be instanciated when this method is called
public ClassB getClassB() {
if (classB == null) {
classB = appContext.getBean(ClassB.class);
}
return classB;
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用getter来访问该对象。
| 归档时间: |
|
| 查看次数: |
3749 次 |
| 最近记录: |