2016-09-22 149 views
0

例如,我的行动中有一个数组列表属性。如何使用spring及其注释将多个bean自动注入ArrayList属性

private ArrayList<SitesBusiness> businesses; 

和SitesBusiness只不过是一个接口,并且此属性旨在包含实现SitesBusiness的所有Bean。

问题是我想使用Spring注释机制自动将实现SitesBusiness的所有Bean注入到业务中。

任何人都可以提供帮助吗?非常感谢。

我试图用自动连接上该方法来完成这项工作

@Autowired 
    public void addBusiness(SitesBusiness business) { 
     System.out.println("SitesAction, addBusiness.DI1210, business.identifier: " + business.getIdentifier()); 
     for (int i = 0; i < this.businesses.size(); ++i) { 
      if (GlobalMethods.getInstance().checkEqual(this.businesses.get(i), business) || GlobalMethods.getInstance().checkEqual(this.businesses.get(i).getIdentifier(), business.getIdentifier())) { 
       return; 
      } 
     } 
     this.businesses.add(business); 
    } 

不幸的是,这是我的了:

 expected single matching bean but found 2: accountBusiness,diaryBusiness 
+0

它如果你用列表 – Nicolas

+0

'@Autowired List 企业替换ArrayList,就应该可以工作;'会工作。 – manish

+0

@manish谢谢,将类型更改为List时,Autowired刚刚工作。这对我来说完全是一种魔法。对不起,我不知道如何将你的答案标记为正确答案。 – Zion

回答

2

此代码应工作:

@Autowired 
private List<SitesBusiness> businesses; 
+0

这不是这种情况。我的意思是,你不能自动装载准备使用的ArrayList。我们所拥有的是实现SitesBusiness的类,它们都使用Component进行了注释。这些候选bean不会分组到一个ArrayList。 – Zion

+0

对不起,我不明白你的评论。你将得到的是一个所有实现了SitesBusiness接口的类的Bean列表。这不是你需要的吗? – Nicolas

+0

是的,但我的意思是更远的是候选bean是用spring注释自动创建的。您不能认为该列表已准备好进行一次性注射。 – Zion

相关问题