在Spring事务管理中通过TransactionProxyFactoryBean配置事务信息,此类通过3个重要接口完成事务的配置及相关操作,分别是PlatformTransactionManager、TransactionDefinition和TransactionStatus。其中TransactionDefinition用于描述事务的隔离级别超时时间是否为只读事务事务传播规则等控制事务具体行为的事务属性,这些属性可以通过XML配置或注解描述提供,也可以通过手工编程的方式设置。PlatformTransactionManager根据TransactionDefinition提供的事务属性配置信息,创建事务,并用TransactionStatus描述这个激活事务的状态,针对不同的持久化框架有不同的事务平台管理实现类。
 
编程式事务管理
        通过TransactionTemplate类方法 execute(TransactionCallback<T> action)的TransactionCallback回调接口中定义需要以事务方式组织的数据访问逻辑。该类还提供了设置事务管理器(PlatformTransactionManager的实现类隔离级别传播行为的相关属性。
 
基于XML配置声明式事务
        通过TransactionProxyFactoryBean类对业务类进行代理,织入事务增强逻辑。首先,需要为该代理类指定事务管理器,这些事务管理器实现了PlatformTransactionManager接口;其次,通过target属性指定需要代理的目标Bean,最后,为业务Bean的不同方法配置事务属性(Spring通过键值配置业务方法的事务属性信息,键可以使用通配符*)。
<bean id="XXXService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="target" ref="xxxServiceTarget"/>
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="*">传播行为,隔离级别,readOnly,-Exceptions,+Exception</prop>
</props>
</property>
</bean>
    注:通过指定带“+”号或“-”的异常类名,决定事务是否回滚。当抛出“-”型异常时,将触发事务回滚,当抛出“+”型异常时,即使这个异常是检查型异常,事务也会提交。Key值的具体配置和相关值可以参考TransactionAttributeEditor和TransactionDefinition。
 
基于tx/aop命名空间的配置
        通过tx命名空间定义织入事务的增强逻辑,然后使用aop命名空间定义相关的切面信息(切点和增强),具体配置信息如下:
        <aop:config>
<aop:pointcut id="" expression="" />
<aop:advisor pointcut-ref="" advice-ref="" />
</aop:config>
<tx:advice id="txAdvice" >
        <tx:attributes> 
            <tx:method name="" read-only="" isolation=""  propagation=""  no-rollback-for="" rollback-for="" timeout="-1"/>      
        </tx:attributes>
        </tx:advice>
    :在tx:method标签中,name表示与事务属性关联的方法名,可使用通配符(*); read-only标识事务是否可读;isolation配置事务的隔离级别;no-rollback-for配置不触发事务回滚的Exception;rollback-for配置事务回滚的Exception;propagation配置事务的传播行为。
 
基于注解配置声明式事务
        通过@Transactional注解对需要事务增强的Bean接口、实现类或方法进行标注,在容器中配置基于注解的事务增强驱动,即可启用基于注解的声明式事务。一般在具体业务类上使用@Transactional注解,也可以在方法处标注注解(需要使用特殊的事务属性),此时就会覆盖类定义处的注解。
<tx:annotation-driven transaction-manager="" proxy-target-class="" order=""/>
        如果需要使用不同的事务管理器时,需要在注解中指定出事务管理器的名字,并在XML配置事务管理器时需要使用<qualifier/>标签指定相应的名字。

【JAVA】Spring 事物管理的更多相关文章

  1. java陷阱之spring事物管理导致锁无效

    模拟锁情况无效 1.创建一个表 SET NAMES utf8mb4; ; DROP TABLE IF EXISTS `demo`; CREATE TABLE `demo` ( `id` ) NOT N ...

  2. MyBatis6:MyBatis集成Spring事物管理(下篇)

    前言 前一篇文章<MyBatis5:MyBatis集成Spring事物管理(上篇)>复习了MyBatis的基本使用以及使用Spring管理MyBatis的事物的做法,本文的目的是在这个的基 ...

  3. Spring事物管理--相关要点及配置事物管理器

    事务的四大特征 1.原子性:一个事务中所有对数据库的操作是一个不可分割的操作序列,要么全做要么全不做 2.一致性:数据不会因为事务的执行而遭到破坏 3.隔离性:一个事物的执行,不受其他事务的干扰,即并 ...

  4. spring 事物管理没起到作用

    今天在做项目的时候发现配置的spring 事物管理没起到作用.可是配置又是依据官网配置的,不可能会错.最后发现使mysql的问题 普通情况下,mysql会默认提供多种存储引擎,你能够通过以下的查看: ...

  5. Spring事物管理简介 (转)

    一.事物1.什么是事物 事物指的是逻辑上的一组操作,这组操作要么全部成功,要么全部失败 2.事物的特性 原子性:事物是一个不可分割的工作单位,事物中的操作要么都发生,要么都不发生 一致性:事物前后数据 ...

  6. 集成Spring事物管理

    什么是事物 事物是访问数据库的一个操作序列,数据库应用系统通过事物集来完成对数据库的存取.事物的正确执行使得数据库从一种状态转换为另一种状态. 事物必须服从ISO/IEC所制定的ACID原则.ACID ...

  7. JAVA Spring 事物 ( 已转账为例 ) 基于 AOP 注解

    <一> 配置为文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&qu ...

  8. JAVA Spring 事物 ( 已转账为例 ) 基于 XML 配置,事务类型说明

    < 1 > 配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&q ...

  9. SpringAOP和Spring事物管理

    Spring AOP : Pointcut表达式: designators-指示器 wildcards-通配符 operators-操作符 wildcards: * -- 匹配任意数量的字符 + -- ...

随机推荐

  1. oracle 11g r1 RAC增加新节点

    在一套两节点的rac上增加一个新的节点,详细的操作记录如下:   已有节点RAC1,RAC2 一,环境及版本: 公司环境:Vmware Esxi 5.5  操作系统:Redhat 5.8 x86_64 ...

  2. 判断一个类到底是从哪个jar包中调用的工具类

    项目中使用的jar包较多时,会出现jar冲突的情况,有时候很难判断当前使用的这个类是从哪个jar包中调用的.因为一般我们只能看到jar包的名称,不清楚其中的类的目录结构. 这个类的作用就是说明当前调用 ...

  3. NS 802.11函数分析(一)

    recv函数有两个作用,不仅是接收其他节点发送的包,而且当节点接收到其他包的时候也会调用recv() 首先给出NS2中recv的源码,和一些注释: void Mac802_11::recv(Packe ...

  4. [Tools] maven-eclipse安装及配置

    [背景] 买了个surface,带到公司当做开发机器来用,各种环境都需要重新安装,写个笔记记录下maven安装步骤,虽然很简单,但是我这脑子,容易忘记,写下来以备用 [开工] 安装Maven 访问 M ...

  5. Flash Media Server 4.0 破解 注册

    Adobe Flash Media Interactive Server 3.5s/n:1373-5047-2985-0514-5175-0098 s/n: 1373-5632-4666-9521-8 ...

  6. WORD2007多级列表

    转自玄鸟翩翩 http://hi.baidu.com/shine_yen http://hi.baidu.com/shine_yen/item/01ff2255043bc1aeacc85722 用Wo ...

  7. 简单区分VMware的三种网络连接模式(bridged、NAT、host-only)

    艺搜简介 VMware在安装时默认安装了两块虚拟网卡,VMnet1和VMnet8,另外还有VMnet0.这些虚拟网卡的配置都是由Vmware虚拟机自动生成的,一般来说不需要用户自行设置. Vmware ...

  8. RecyclerView再封装

    RecyclerView做为ListView的替代品,已经出了很久了,既然是替代品,那自然有些ListView没有的优点.比如说:可以随意切换list,grid,stagger.可以指定一个或多个it ...

  9. express-20 REST API和JSON

    简介 "Web服务"是一个通用术语,指任何可以通过HTTP访问的应用程序编程界面(API); 我们的重点是提供"REST风格"的服务,与其交互要更直接得多. R ...

  10. SQL初级第二课

    随着我们数据库越来越复杂 我们要掌握的姿势也要也来越多.... 首先建立个表 create table shop(code int primary key identity (1,1),name va ...