zoukankan      html  css  js  c++  java
  • spring源码分析事务篇

      上一篇我介绍了spring事务的传播特性和隔离级别,以及事务定义的先关接口和类的关系。我们知晓了用TransactionTemplate(或者直接用底层P的latformTransactionManage---不推荐)进行事务管理方式,也就是Spring的编程式事务,这种方式使得业务代码和事务耦合度还是过高,spring推荐非入侵方式开发,所以它还有另外一种基于AOP的管理事务方式-------声明式事务,今天我们就来研究下这种方式

      声明式事务管理也有两种常用的方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解。

      基于配置文件的如下

      

     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource" />
        </bean>
        <!-- ========================================分隔线========================================= -->
    
        <tx:advice id="transactionAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <!-- 修改 保存 删除 -->
                <tx:method name="save*" propagation="REQUIRED" rollback-for="Exception"/>
                <tx:method name="modify*" propagation="REQUIRED" rollback-for="Exception"/>
                <tx:method name="update*" propagation="REQUIRED" rollback-for="Exception"/>
                <tx:method name="create*" propagation="REQUIRED" rollback-for="Exception"/>
                <tx:method name="insert*" propagation="REQUIRED" rollback-for="Exception"/>
                <tx:method name="remove*" propagation="REQUIRED" rollback-for="Exception"/>
                <tx:method name="delete*" propagation="REQUIRED" rollback-for="Exception"/>
                
                <!-- 查询方法只读 -->
                <tx:method name="get*" propagation="REQUIRED" read-only="false"/>
                <tx:method name="list*" propagation="REQUIRED" read-only="true"/>
                <tx:method name="query*" propagation="REQUIRED" read-only="true"/>
                <tx:method name="find*" propagation="REQUIRED" read-only="true"/>
                <tx:method name="load*" propagation="REQUIRED" read-only="true"/>
                <tx:method name="search*" propagation="REQUIRED" read-only="true"/>
                <tx:method name="datagrid*" propagation="REQUIRED" read-only="true"/>
                <tx:method name="select*" propagation="REQUIRED" read-only="true"/>
            </tx:attributes>
        </tx:advice>
        <aop:config>
            <aop:pointcut id="transactionPointcut" expression="execution(* com.meiren.message.service.impl.*.*(..))" />
            <aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" />
        </aop:config>

      未完待续。。。

      

  • 相关阅读:
    关于String和StringBuilder、StringBuffer的一个简单性能测试
    HTML网页BODY中如何设置背景图拉伸的最有效方法
    JS鼠标事件大全
    去除链接虚线框的推荐方法
    CSS实现文字颠倒旋转效果
    三种方法解决IE6下png透明失效的问题
    js获取节点 dom操作
    IE HACK
    javascript作用域(Scope)
    RGB配色表
  • 原文地址:https://www.cnblogs.com/zwt1990/p/7099766.html
Copyright © 2011-2022 走看看