Cómo agregar más HBM a MapingResources existentes o la lista HBM existente en la primavera
Pregunta
Tengo una aplicación para padres, que incluye sub-aplicaciones. Mi aplicación para padres tiene su propia lista incluida 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>
Mis subcomisiones quieren agregar su propia lista de HBMS dependientes a las aplicaciones para padres. La forma en que debería funcionar es, si incluye esta subp aplicación, también incluiría el nuevo HBMS y la aplicación infantil iniciaría la inclusión.
El nuevo HBMS que se incluirá podría parecer
xx / dd.hbm.xml xx / ee.hbm.xml
¿Cómo podemos hacerlo?
Solución
Tu solución podría ser:
dividir los 'MappingResources' a
<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>
en la aplicación infantil Consulte el frijol "HBMSOURCELIST" e invoque un "Addall" en él con otra lista a través del "MethodinVokingFactoryBean"
<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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow