如何延迟初始化@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();
}
}
当实例化classA bean时,尽管有@Lazy注释,classB bean也会被实例化。 我怎样才能避免classB bean实例化?
答案 0 :(得分:0)
你真的不能那样做。就像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;
}
}
然后使用getter访问该对象。