Spring声明式事务回滚机制

2018-05-18  本文已影响165人  小小蒜头

需求:本来的流程是用户对将购买的商品订单进行支付,支付成功后商品减库存,然后打印小票,将这笔订单信息存进数据库,如果用户支付请求抛出异常时,数据库里商品库存应该保持不变,本次订单也不会存进数据库,这里我的解决方式就是在这个方法上加上事务处理。

配置spring-mybatis.xml

<!-- 事物切面配置 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="insert*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>
            <tx:method name="update*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>
        </tx:attributes>
    </tx:advice>

    <aop:config>
        <aop:pointcut id="payPointCut" expression="execution(* com.fuhuitong.applychain.service.impl.POSAppServiceImpl.posPaySuccess(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="payPointCut"/>
    </aop:config>

  
    <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
    <bean id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <tx:annotation-driven transaction-manager="transactionManager"/>
添加事务

注意:要加入一个包,本人因为少这一个包报错,走了很多弯路。

<dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.8.6</version>
 </dependency>
上一篇下一篇

猜你喜欢

热点阅读