Spring事务支持:利用继承简化配置

     原文链接:http://www.cnblogs.com/jbelial/archive/2012/06/04/2533531.html

     因为事务代理的实现类是 TransactionProxyFactoryBean 。 事务代理Bean必须注入事务管理器。

  大部分情况下,每个事务代理的事务属性大同小异,对于这种情况,Spring提供了Bean 与Bean之间的继承,可以简化配置。将大部分的通用配置,配制成事务模板。而实际的事务代理Bean,则继承事务模板。

  其配置文件如下:

复制代码
<?xml version = "1.0" encoding = "UTF-8"?>
<!-- Spring 配置文件的文件头,包含DTD等信息 -->
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
                   "http://www.spingframework.org/dtd/spring-beans.dtd">
    ...
    <!-- 定义事务管理器,使用适用于Hibernate的事务管理 -->
    <bean id = "transactionManager" 
          class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <!-- HibernateTransactionManager bean 需要依赖注入一个SessionFactory bean 的引用 -->
        <property name = "sessionFactory">
            <ref local = "sessionFactory" />
        </property>
    </bean>
    <!-- 配置事务模版,模版Bean被设置成abstract bean ,保证不会被初始化 -->
    <bean id = "txBase"
          class = "org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
          lazy-init = "true" abstract = "true" >
          <!-- 为事务模版注入事务管理器 -->
          <property name = "transactionAttributes" >
                <props>
                    <prop key = "find*"> PROPAGATION_REQUIRED,readOnly</prop>
                    <prop key = "*" > PROPAGATION_REQUIRED</prop>
                </prop>
          </property>
    </bean>
    <!-- 实际的事务代理Bean -->
    <bean id = "xsDao" parent = "txBase">
        <!-- 采用嵌套Bean配置目标Bean-->
        <property name = "target">
            <bean class = "org.dao.imp.XsDaoImp">
                <property name = "sessionFactory">
                    <ref local= "sessionFactory" >
                </property>
            </bean>
        </property>
    </bean>
复制代码

  这比直接采用TransactionProxyFactoryBean 的事务代理配置方式,大大减少配置配置文件的代码量。每个事务代理的配置都继承事务模板,无需重复指定事务代理的实现类,无需重复指定传播属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值