Ho due file XML che definiscono i fagioli per la Spring Framework (versione 2.5.x):Come modificare bean definiti in un contenitore di primavera
containerBase.xml:
<beans>
<bean id="codebase" class="com.example.CodeBase">
<property name="sourceCodeLocations">
<list>
<value>src/handmade/productive</value>
</list>
</property>
</bean>
</beans>
... e
containerSpecial.xml:
<beans>
<import resource="containerBase.xml" />
</beans>
Ora Voglio regolare la proprietà sourceCodeLocations
di bean codebase
entro containerSpecial.xml
. Devo aggiungere un secondo valore src/generated/productive
.
Un approccio semplice è quello di sostituire la definizione di codebase
in containerSpecial.xml
e aggiungere entrambi i valori, l'uno dall'altro containerBase.xml
e quella nuova:
containerSpecial.xml:
<beans>
<import resource="containerBase.xml" />
<bean id="codebase" class="com.example.CodeBase">
<property name="sourceCodeLocations">
<list>
<value>src/handmade/productive</value>
<value>src/generated/productive</value>
</list>
</property>
</bean>
</beans>
C'è un modo per estendere la lista senza ridefinire il fagiolo?
EDIT 2009-10-06:
Lo scopo di questo è di avere un contenitore standard condiviso containerBase
che viene utilizzato da un sacco di progetti diversi. Ogni progetto può sovrascrivere/estendere alcune proprietà che sono speciali per quel progetto nel proprio containerSpecial
. Se il progetto non esegue l'override, utilizza le impostazioni predefinite definite in containerBase
.
CodebaseOverrider non è proprio quello che sto cercando, ma con questo approccio potrei scrivere facilmente un CodebaseListExtender. Lo proverò. – tangens