簡體   English   中英

如何自動裝配factorybean

[英]How to autowire factorybean

我有一個ServiceListFactoryBean,它創建一個服務實現列表:

<bean id="services"
      class="org.springframework.beans...ServiceListFactoryBean"
      p:serviceType="ServiceInterface"/>

我可以使用applicationContext訪問服務而不會出現問題:

    final List services = ctx.getBean("services", List.class));

我也可以成功使用trad constructor-arg注入:

<bean id="aClass" class="AClass">
    <constructor-arg ref="services"/>
</bean>

但是,如果我嘗試自動依賴

@Autowired @Qualifier("services") private List services;

然后我得到一個BeanCreationException引起的

FatalBeanException: No element type declared for collection [java.util.List]

我使用的是Spring 3.0。

事實證明答案是......

@Resource(name="services") private List services;

異常消息來自DefaultListableBeanFactory ,並且它正在編譯它無法自動裝配您的字段,因為List沒有泛型類型(請參閱DefaultListableBeanFactory第716行)。

嘗試在您的字段中添加通用簽名,呃

@Autowired @Qualifier("services") private List<Service> services;

我今天真正發現的是,當你需要將bean名稱映射到特定接口的實例時,不需要@Qualifier和任何類型的FactoryBean代碼。 Spring會為你找到並注入候選人。 @Resource沒有做到這一點,以防萬一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM