0

我有 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 都是空的!

我怎样才能让它工作?

4

1 回答 1

0

请改用@Awtowired注释。要使用@Inject注释,您必须在支持它的 claspath 上有一个特殊的 jar。此外,您的 xml 中必须有 <context:annotation-config/>元素才能启用awtowiring。此外,您应该为这 3 个 bean(myBean、myBeanA、myBeanB)启用按名称自动装配。

于 2013-07-08T21:35:42.867 回答