如何重用Spring XML片段

Ale*_*exR 5 java xml spring

我正在开发基于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>
Run Code Online (Sandbox Code Playgroud)

我很乐意使用某种带参数的导入.例如,我想像这样创建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>
Run Code Online (Sandbox Code Playgroud)

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

<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>
Run Code Online (Sandbox Code Playgroud)

这样的事情可能吗?

gpe*_*che 4

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