2011-02-25 3 views
2

Quelle est la meilleure façon de câbler une liste de beans au printemps xml, la capture est que les données de chaque bean doivent être définies dans le fichier xml (c'est parce que pendant ce sprint ils viendra de xml, sprint suivant de db, donc ça ne vaut pas le coup de mettre trop de temps dans la création).comment câbler une liste de beans au printemps

ce que j'ai, mais il doit y avoir une meilleure façon:

<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> 

Répondre

6

Il est venu avec une grande surprise pour moi, mais depuis le printemps 2.5 vous pouvez réellement écrire:

@Resource 
private List<Announcement> announcements; 

Et Spring va trouver tous les haricots de type Announcement et les injecter en utilisant une liste. Bien sûr, l'ancienne école d'aller chercher les grains manuellement est toujours valable:

@Resource 
private ApplicationContext ctx; 

@PostConstruct 
public void init() { 
    Map<String, Announcement> announcementsBeans = ctx.getBeansOfType(Announcement.class); 
    List<Announcement> announcements = announcementsBeans.values(); 
} 
+0

parfait, merci – mkoryak

+0

blog intéressant BTW, im devoir vous suivre – mkoryak

Questions connexes