Spring事务管理

事务的传播特性:

一张图很清楚的描述事务的传播特性:

七种类型
  • Required:当前有事务时使用当前的事务,当前没有事务时创建新的事务

实例

对不同的操作类型配置不同的传播类型

<aop:aspectj-autoproxy proxy-target-class="true"/>
    
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="add*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" 
                    no-rollback-for="com.carease.cms.common.ex.SimpleNoRollbackException"/>
            <tx:method name="delete*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>
            <tx:method name="modify*" 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:method name="save*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>
            <tx:method name="upload*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>
            <tx:method name="do*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>
            <tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="noSupport*" propagation="NOT_SUPPORTED" read-only="true"/>
            <tx:method name="*" propagation="SUPPORTS" read-only="true"/>
        </tx:attributes>
    </tx:advice>

read-only=true的操作表示可以进行读操作不可以进行写操作;read-only=false表示可以进行读写操作。

将事务控制在service层:

    <!--把事务控制在Service层-->
    <aop:config>    
       <aop:pointcut id="pc" expression="execution(public * com.carease.cms.eps.biz.*.service.*.*(..))" /> 
       <aop:advisor pointcut-ref="pc" advice-ref="txAdvice" />
    </aop:config>
    
    <bean id="transactionTemplate"
        class="org.springframework.transaction.support.TransactionTemplate">
        <property name="transactionManager" ref="transactionManager" />
    </bean>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • spring支持编程式事务管理和声明式事务管理两种方式。 编程式事务管理使用TransactionTemplate...
    熊熊要更努力阅读 1,774评论 0 0
  • Spring事务机制主要包括声明式事务和编程式事务,此处侧重讲解声明式事务,编程式事务在实际开发中得不到广泛使用,...
    EnigmaXXX阅读 3,880评论 0 0
  • 1 什么是事务 生活中关于事务有一个常见的场景,即银行用户转账。简单的讲,转账可以分为下面 2 个步骤: 查看用户...
    millions_chan阅读 3,733评论 0 4
  • 对大多数Java开发者来说,Spring事务管理是Spring应用中最常用的功能,使用也比较简单。本文主要从三个方...
    sherlockyb阅读 8,430评论 0 18
  • First created on Aug.11.2015. All rights reserved. 他喜欢大自然...
    astrocachet阅读 2,350评论 0 0

友情链接更多精彩内容