我正在尝试定义一个bean,它是使用@Component批注配置的bean列表。我正在使用Spring 3.1。
我的@Configuration类看起来像
@Configuration
public class ReferenceDataConfig {
private ResourceA resourceA;
@Resource
private ResourceB resourceB;
@Resource
private ResourceC resourceC;
@Resource
private ResourceD resourceD;
@Bean (name = "myResourceList")
public List<MyResource> getResourceLst() {
return Arrays.asList(
resourceA
, resourceB
, resourceC
, resourceD
);
}
@Resource (name = "resourceA")
public void setResourceA(ResourceA resourceA) {
this.resourceA = resourceA;
}
我发现的是,在初始化任何资源之前都会调用getResourceLst。当我添加setResourceA方法时,我可以看到它最终确实被调用了,但是到调用它的时候为时已晚。 myResourceList bean已经创建。
我应该如何处理这个问题?
谢谢,
彼得
最佳答案
根据您要尝试执行的操作,解决方案可能比您想象的要简单。
如果List<MyResource>
应该包含所有MyResource
类型的bean,则不必为列表声明单独的bean。您可以像注入其他任何bean一样注入列表,Spring会收集在应用程序上下文中找到的所有MyResource
类型的bean,并将它们全部作为List<MyResource>
对象注入。