2012-01-23 50 views
2

我有一個父應用程序,其中包含子應用程序。 我父的應用程序有HBMS如何在春季現有mappingResources或現有hbm列表中添加更多hbm

<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可能看起來像

XX/dd.hbm.xml XX/ee.hbm.xml

我們該怎麼辦呢?

回答

4

您的解決方案可能是:

拆分了「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> 

在兒童應用 參考豆「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>