我有 2 个豆子“myBeanA”和“myBeanB”。我必须根据一些标志在启动时归还其中一个。
我决定用工厂来实现这个
<bean id="myBeanFactory" class="MyBeanFactory"/>
<bean id="myBeanA" class="MyClassImplA"/>
<bean id="myBeanB" class="MyClassImplB"/>
<bean id="myBean" class="MyInterface" bean-factory="myBeanFactory" bean-method="getMyBean"/>
现在工厂应该做这样的事情
public MyInterface getMyBean(){
if ( flag ) {
return (MyInterface) context.getBean("myBeanA");
}else{
return (MyInterface) context.getBean("myBeanB");
}
}
这工作正常.. 但是当我尝试将“myBeanB”和“myBeanA”注入 myBeanFactory 时,我得到空值..
@Inject // assume setters included..
private MyInterface myBeanA;
@Inject // assume setters included...
private MyInterface myBeanB;
public MyInterface getMyBean(){
return flag ? myBeanA : myBeanB;
}
在这种情况下出于某种原因 - myBeanA 和 myBeanB 都是空的!
我怎样才能让它工作?