Como adicionar mais hbm aos mapeamentos existentes ou à lista hbm existente no Spring
Pergunta
Eu tenho um aplicativo pai, que inclui subaplicativos.O aplicativo My Parent tem sua própria lista incluída de hbms
<bean name="mappingResources"
class="my.xxx.MyListFactoryBean">
<property name="sourceList">
<list>
<value>aaa/bbb/aa.hbm.xml</value>
<value>aaa/bbb/bb.hbm.xml</value>
<value>aaa/bbb/cc.hbm.xml</value>
</list>
</property>
</bean>
Meus subaplicativos desejam adicionar sua própria lista de hbms dependentes ao aplicativo pai.A maneira como deveria funcionar é: se incluir este subaplicativo, incluirá também os novos hbms e o aplicativo filho iniciará a inclusão.
novos hbms a serem incluídos podem parecer
xx/dd.hbm.xml xx/ee.hbm.xml
Como podemos fazer isso?
Solução
Sua solução poderia ser:
Divida o 'mappingResources' para
<bean name="mappingResources" class="my.xxx.MyListFactoryBean">
<property name="sourceList" ref="hbmSourceList" />
</bean>
<bean id="hbmSourceList" class="java.util.ArrayList">
<constructor-arg>
<list>
<value>aaa/bbb/aa.hbm.xml</value>
<value>aaa/bbb/bb.hbm.xml</value>
<value>aaa/bbb/cc.hbm.xml</value>
</list>
</constructor-arg>
</bean>
No App Child, refere-se ao Bean "HBMSourcelist" e invocar um "Addall" com uma outra lista por meio do "MethodInvingFactoryBean"
<bean id="hbmSourceListExtender" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject"><ref bean="hbmSourceList"/></property>
<property name="targetMethod"><value>addAll</value></property>
<property name="arguments">
<ref local="childAppHbmSourceList"/>
</property>
</bean>
<bean id="childAppHbmSourceList" class="java.util.ArrayList">
<constructor-arg>
<list>
<value>xx/dd.hbm.xml</value>
<value>xx/ee.hbm.xml</value>
</list>
</constructor-arg>
</bean>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow