2010-11-25 10 views
5

Estoy trabajando en la aplicación basada en Spring. El XML es simple pero contiene varios fragmentos casi idénticos. Por ejemplo tengo 5 objetos DAO diferentes, 2 colas etc. configuración de cada DAO parece:Cómo reutilizar fragmentos Spring XML

<bean id="deviceDaoTarget" class="com.mycompany.dao.hibernate.DeviceDAOHibernateImpl" 
    autowire="byName" /> 

<bean id="deviceDAO" class="org.springframework.aop.framework.ProxyFactoryBean"> 
    <property name="proxyInterfaces"> 
     <value>com.mycompany.dao.DeviceDAO</value> 
    </property> 
    <property name="interceptorNames"> 
     <list> 
      <value>hibernateInterceptor</value> 
      <value>deviceDaoTarget</value> 
     </list> 
    </property> 
</bean> 

que estaría feliz de usar algún tipo de importación con los parámetros. Por ejemplo, me gustaría crear la configuración parametrizada de la DAO así:

<bean id="${dao.target}" class="${dao.class}" 
    autowire="byName" /> 

<bean id="deviceDAO" class="org.springframework.aop.framework.ProxyFactoryBean"> 
    <property name="proxyInterfaces"> 
     <value>${dao.interface}</value> 
    </property> 
    <property name="interceptorNames"> 
     <list> 
      <value>hibernateInterceptor</value> 
      <value>${dao.target}</value> 
     </list> 
    </property> 
</bean> 

y luego llamarlo varias veces con diferentes parámetros, por ejemplo .:

<import resource="spring-dao.xml"> 
    <param name="dao.interface">com.mycompany.dao.hibernate.DeviceDAO</param> 
    <param name="dao.class">com.mycompany.dao.hibernate.DeviceDAOHibernateImpl</param> 
    <param name="dao.target">deviceDaoTarget</param> 
</import> 

es algo como esto posible?

Respuesta

3

Puede definir un <bean id="parentBean" abstract="true" ...>...</bean> con la configuración común y luego tener <bean id="childBean" parent="parentBean" ...>...</bean> con solo una configuración específica para ese bean.

+0

¡Estupendo! Gracias. ¿Cómo me olvidé de la herencia de los frijoles? – AlexR

Cuestiones relacionadas