spring tx:advice事务配置

首先在resources/applicationContext.xml添加如下内容:

 <!-- 配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
注:这是作为公共使用的事务管理器bean,这个会是事先配置好的,不需各个模块各自去配。

 下面就开始配置各个模块所必须的部分,首先就是配置事务的传播特性,如下:

<!--  配置事务传播特性 -->
    <tx:advice id="allAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="add*" propagation="REQUIRED"/>
            <tx:method name="update*" propagation="REQUIRED"/>
            <tx:method name="delete*" propagation="REQUIRED"/>
            <tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
        </tx:attributes>
    </tx:advice>
    <!--  配置参与事务的类 -->
    <aop:config>
        <aop:pointcut id="Blogpointcut" expression="execution(* org.ssh.dao..*.*(..))"></aop:pointcut>
        <aop:advisor advice-ref="allAdvice" pointcut-ref="Blogpointcut" ></aop:advisor>
    </aop:config>


需要注意的地方:

(1) advice(建议)的命名:由于每个模块都会有自己的Advice,所以在命名上需要作出规范,初步的构想就是模块名+Advice(只是一种命名规范)。

(2) tx:attribute标签所配置的是作为事务的方法的命名类型

         如<tx:method name="add*" propagation="REQUIRED"/>

        其中*为通配符,即代表以add为开头的所有方法,即表示符合此命名规则的方法作为一个事务。

        propagation="REQUIRED"代表支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。

(3) aop:pointcut标签配置参与事务的类,配的应该是包含那些作为事务的方法的dao类。

       首先应该特别注意的是id的命名,同样由于每个模块都有自己事务切面,所以我觉得初步的命名规则因为模块名+pointcut。而且每个模块之间不同之处还在于以下一句:

       expression="execution(* org.ssh.dao..*.*(..))"

       其中第一个*代表返回值,第二*代表dao下子包,第三个*代表方法名,“(..)”代表方法参数。

(4) aop:advisor标签就是把上面我们所配置的事务管理两部分属性整合起来作为整个事务管理。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值