2017-03-10 2 views
0

Ich habe so Bohne Erklärung:Autofill Frühling Karte mit Werten, whitch in anderen XML-Deklarationen erklärt

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE beans SYSTEM "../schemas/spring-beans.dtd"> 
<beans> 
    <import resource="container-*.xml" /> 
    <bean id="containerCodeStore" class="com.mycompany.ntd.crm.xxx2.container.InMemoryContainerCodeStore"> 
     <property name="containers"> 
      <map> 
       <entry key="WORKER-ONE" value-ref="workerOneContainer" /> 
       <entry key="WORKER-TWO" value-ref="workerTwoContainer" /> 
      </map> 
     </property> 
    </bean> 
</beans> 

wo Bohnen workerOneContainer und workerTwoContainer in container-worker-one.xml und container-worker-two.xml etwas wie folgt erklärt:

<bean id="workerOneContainer" class="com.mycompany.ntd.crm.xxx.container.workerone.WorkerOneContainer"> 
    <property name="name" value="WORKER-ONE" /> 
    ... 
</bean> 

Jetzt Es ist notwendig, die Kartendeklaration zu reduzieren, so dass die Container aufgrund ihrer eigenen Deklaration selbst in die Karte eingefügt werden. Mit anderen Worten muss Karten Deklaration in Container Bean Deklaration ausbreiten.

+0

Erwarten Sie, dass Spring die Beans automatisch in die Map einfügt? –

+0

Ja. Ich denke es ist möglich. – PavelPraulov

+0

Sie können die zwei Bohnen viz. 'workerOneContainer' und' workerTwoContainer' als separate Felder, aber nicht in einer einzelnen Map als Schlüssel/Wert-Paar. –

Antwort

0

Finnaly, ich gemacht habe solche Änderungen:

  1. in den Bohnen cofiguration id="containerCodeStore" hinzugefügt autowire="byType" Parameter;
  2. In Klasse InMemoryContainerCodeStore Feld List<WorkerContainerParent> containerList hinzugefügt. Jetzt wird diese Liste von Spring automatisch mit Containern gefüllt;
  3. Auch in Klasse InMemoryContainerCodeStore hinzugefügt afterPropertiesSet() Methode, die Karte containers von containerList zu besetzen.

Und es ist mir erlaubt, alle Einträge aus entfernt, da Karte automatisch ausgefüllt.

Verwandte Themen