「myBeanA」と「myBeanB」の 2 つの Bean があります。いくつかのフラグに従って、起動時にそれらの1つを返さなければなりません。
これを工場で実装することにしました
<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に注入しようとすると、nullが発生します..
@Inject // assume setters included..
private MyInterface myBeanA;
@Inject // assume setters included...
private MyInterface myBeanB;
public MyInterface getMyBean(){
return flag ? myBeanA : myBeanB;
}
この場合、何らかの理由で - myBeanA と myBeanB は両方とも null です!
これを機能させるにはどうすればよいですか?