如何在春天连接豆类列表

mko*_*yak 2 spring javabeans

在spring xml中连接bean列表的最佳方法是什么,问题是必须在xml文件中定义每个bean的数据(这是因为在这个sprint中它们将来自xml,来自db的下一个sprint,所以它不是值得为创作投入太多时间).

这就是我所拥有的,但必须有一个更好的方法:

   <bean id="annouce1" class="com.company.domain.Announcement">
       <property name="body" value="bodyasfsdf"/>
       <property name="title" value="title"/>
       <property name="linkText" value=">>"/>
       <property name="linkUrl" value="http://google.com"/>
   </bean>
   <bean id="annouce2" class="com.company.domain.Announcement">
       <property name="body" value="bodyasfsdf"/>
       <property name="title" value="title"/>
       <property name="linkText" value=">>"/>
       <property name="linkUrl" value="http://google.com"/>
   </bean>
       <bean id="annouce3" class="com.company.domain.Announcement">
       <property name="body" value="bodyasfsdf"/>
       <property name="title" value="title"/>
       <property name="linkText" value=">>"/>
       <property name="linkUrl" value="http://google.com"/>
   </bean>
       <bean id="annouce4" class="com.company.domain.Announcement">
       <property name="body" value="bodyasfsdf"/>
       <property name="title" value="title"/>
       <property name="linkText" value=">>"/>
       <property name="linkUrl" value="http://google.com"/>
   </bean>


   <util:list id="homepageAnnoucements" scope="singleton">
          <ref bean="annouce1"/>
          <ref bean="annouce2"/>
          <ref bean="annouce3"/>
          <ref bean="annouce4"/>
   </util:list>
Run Code Online (Sandbox Code Playgroud)

Tom*_*icz 6

它给我带来了惊喜,但是从Spring 2.5开始你就可以写出:

@Resource
private List<Announcement> announcements;
Run Code Online (Sandbox Code Playgroud)

Spring将找到所有类型的bean Announcement并使用列表注入它们.当然,手动取豆的旧学校仍然适用:

@Resource
private ApplicationContext ctx;

@PostConstruct
public void init() {
    Map<String, Announcement> announcementsBeans = ctx.getBeansOfType(Announcement.class);
    List<Announcement> announcements = announcementsBeans.values();
}
Run Code Online (Sandbox Code Playgroud)