Как добавить больше hbm в существующие mappingResources или существующий список hbm в Spring - PullRequest
2 голосов
/ 23 января 2012

У меня есть родительское приложение, которое включает в себя подпрограммы. Приложение «Мой родитель» имеет собственный список 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>

Мои вложенные приложения хотят добавить свой собственный список зависимых hbms к родительскому приложению. Это должно работать так: если оно включает это суб-приложение, оно также будет включать новые hbms, и дочернее приложение будет инициировать включение.

новые включенные hbms могут выглядеть как

хх / dd.hbm.xml хх / ee.hbm.xml

Как мы можем это сделать?

1 Ответ

4 голосов
/ 23 января 2012

Ваше решение может быть:

Разделите 'mappingResources' до

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

в дочернем приложении обратитесь к bean-компоненту "hbmSourceList" и вызовите для него "addAll" с другим списком через "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>
...