0

「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 です!

これを機能させるにはどうすればよいですか?

4

1 に答える 1