既存のMappingResourcesまたはSpringの既存のHBMリストにHBMを追加する方法

StackOverflow https://stackoverflow.com/questions/8973167

質問

私は親アプリを含む親アプリを持っています。 私の親アプリには、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>
.

マイサブアプリケーションは、依存型HBMの独自のリストを親アプリに追加したいと考えています。 それがうまくいくのかは、このサブアップを含む場合、新しいHBMも含め、子供アプリは含めることができます。

含まれる新しいHBMはのように見えることができます

xx / dd.hbm.xml xx / ee.hbm.xml

どうすればいいですか?

役に立ちましたか?

解決

あなたの解決策は次のとおりです。

「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"を参照して、 "MethodInvokingFactoryBean" を介して別のリストで "addAll"を呼び出します。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top