代码之家  ›  专栏  ›  技术社区  ›  AlexR

如何重用Spring XML片段

  •  5
  • AlexR  · 技术社区  · 15 年前

    我正在开发基于Spring的应用程序。XML很简单,但包含几个几乎相同的片段。例如,我有5个不同的DAO对象、2个队列等。每个DAO的配置如下:

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

    我很乐意使用带参数的导入。例如,我想创建如下DAO的参数化配置:

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

    然后用不同的参数调用多次,例如:

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

    有可能吗?

    1 回复  |  直到 15 年前
        1
  •  3
  •   gpeche    15 年前

    您可以定义 <bean id="parentBean" abstract="true" ...>...</bean> 使用通用配置,然后 <bean id="childBean" parent="parentBean" ...>...</bean> 只有那个bean的特定配置。