`
saybody
  • 浏览: 867130 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

Spring声明式事务配置详解

阅读更多

Spring声明式事务功能应该是大家应用 Spring中使用的最多的功能之一了,的确该功能极大的简化了大家对数据库操作的。目前 Spring支持的声明式事务有两个配置方式,一种是 XML配置方式,另一种是注解方式


针对配置这块, XML配置同学们会觉得比较麻烦,特别是针对事务属性的配置,所以补充一下本块配置说明,特分享给大家,希望对大家有帮助。

下面是 Spring XML配置事务比较常用的方式,也是我们这边事务 XML配置事务的使用方式,本文以该种配置为例,进行说明。

     < bean  id ="transactionInterceptor"
        class
="org.springframework.transaction.interceptor.TransactionInterceptor" >
        
< property  name ="transactionManager"  ref ="transactionManager"   />
        
< property  name ="transactionAttributes" >
            
< props >
                
< prop  key ="query*" > PROPAGATION_REQUIRED,readOnly </ prop >
                
< prop  key ="is*" > PROPAGATION_REQUIRED,readOnly </ prop >
                
< prop  key ="find*" > PROPAGATION_REQUIRED,readOnly </ prop >
                
< prop  key ="get*" > PROPAGATION_SUPPORTS,readOnly </ prop >
                
< prop  key ="load*" > PROPAGATION_REQUIRED,readOnly </ prop >
                
< prop  key ="*" > PROPAGATION_REQUIRED </ prop >
            
</ props >
        
</ property >
    
</ bean >

 

配置详解说明如下:

 TransactionInterceptor 是声明式事务拦截器。可以由 Spring AOP拦截器进行回调。

 transactionAttributes 是事务属性的配置说明,也是大家觉得比较不好配置,不太容易记忆的地方

它的配置规则如下:因为都有前缀标识,所以顺序可以修改。

(PROPAGATION_NAME,ISOLATION_NAME,readOnly,timeout_NNNN,+Exception1, - Exception2)

  PROPAGATION_REQUIRED 事务的传播级别 ( PROPAGATION_ 开头 ). 可设置值说明如下:

PROPAGATION_REQUIRED 使用当前事务,如果当前没有事务,则开启新事务

PROPAGATION_SUPPORTS 当前有事务则用,没有事务则不用

PROPAGATION_MANDATORY 当前有事务就用,没有事务则报错 (必须要用事务 )

PROPAGATION_REQUIRES_NEW 当前有事务则挂起原事务,新启事务 (必开新事务 )

PROPAGATION_NOT_SUPPORTED 不使用事务,如果当前有事务,则挂起事务

PROPAGATION_NEVER 不能有事务,如果当前有事务,则报错 (必须没有事务 )

PROPAGATION_NESTED PROPAGATION_REQUIRED

 

 ISOLATION_DEFAULT 事务隔离级别 ( ISOLATION_ 开头 )

ISOLATION_DEFAULT  使用数据库默认事务

ISOLATION_READ_UNCOMMITTED

ISOLATION_READ_COMMITTED

ISOLATION_REPEATABLE_READ

ISOLATION_SERIALIZABLE

 readOnly

如果设置,则表示只读事务,如果不设置,则表示读来事务

TIMEOUT_DEFAULT 事务超时设置 (timeout_ 开头 )

单位是秒。 例如 timeout_ 20 则表示事务超时时间是 20秒。

 +Exception 表示遇到该异常时,执行回滚

 –Exception 表示遇到该异常时,不执行加滚

transactionManager 是事务管理器,针对不同的持久层,事务都会提供不同的实现。其接口都是 org.springframework.transaction.PlatformTransactionManager

0
2
分享到:
评论

相关推荐

    Spring的编程式事务和声明式事务详解

    主要介绍了Spring的编程式事务和声明式事务的相关内容,涉及Spring事务属性、Spring事务的基本类等知识,需要的朋友可以了解下。

    Spring框架--事务管理

    Spring提供了两种事务管理方式:编程式事务管理和声明式事务管理; 描述了声明式事务管理,XML,注解;事务配置详解。。。

    主题:详解spring事务属性.doc

    我们在使用Spring声明式事务时,有一个非常重要的概念就是事务属性。事务属性通常由事务的传播行为,事务的隔离级别,事务的超时值和事务只读标志组成。我们在进行事务划分时,需要进行事务定义,也就是配置事务的...

    SSM框架教程Spring+SpringMVC+MyBatis全覆盖_Java热门框架视频教程

    7、Spring的声明式事务控制 8、SpringMVC的介绍及其快速入门 9、SpringMVC的数据请求和响应 10、SpringMVC的异常处理及其拦截器 11、MyBatis简介及其入门 12、MyBatis的配置文件详解 13、MyBatis的多表操作 适用...

    Spring 事务隔离与事务传播的详解与对比

    Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。 DataSource、 TransactionManager这两部分只是会...

    Spring+SpringMVC配置事务管理无效原因及解决办法详解

    主要介绍了Spring+SpringMVC配置事务管理无效原因及解决办法详解,具有一定借鉴价值,需要的朋友可以参考下

    spring.doc

    5.1.8声明式事务管理 116 5.1.8.1Spring的事务管理器 117 5.1.8.2Spring事务的传播属性 117 5.1.8.3Spring事务的隔离级别 117 拓展: 118 5.1.8.4以XML配置的 形式 119 拓展: 120 5.1.8.5以注解方式配置 125 拓展:...

    Spring 2.0 开发参考手册

    9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.6.1. @Transactional 有关的设置 ...

    Spring中文帮助文档

    9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 事务传播 9.5.8. 通知...

    Spring API

    9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 事务传播 9.5.8. 通知...

    spring chm文档

    9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. ...

    Spring.3.x企业应用开发实战(完整版).part2

    9.6 使用注解配置声明式事务 9.6.1 使用@Transactional注解 9.6.2 通过AspectJ LTW引入事务切面 9.7 集成特定的应用服务器 9.7.1 BEA WebLogic 9.7.2 BEA WebLogic 9.8 小结 第10章 Spring的事务管理难点剖析 10.1 ...

    Spring3.x企业应用开发实战(完整版) part1

    9.6 使用注解配置声明式事务 9.6.1 使用@Transactional注解 9.6.2 通过AspectJ LTW引入事务切面 9.7 集成特定的应用服务器 9.7.1 BEA WebLogic 9.7.2 BEA WebLogic 9.8 小结 第10章 Spring的事务管理难点剖析 10.1 ...

    低清版 大型门户网站是这样炼成的.pdf

    6.3.1 spring 2.5的声明式事务管理 394 6.3.2 基于xml方式的事务管理配置 396 6.3.3 基于annotation方式的事务管理配置 400 6.4 “桃园三结义”——ssh 2组合开发框架始成 404 6.4.1 spring 2.5集成orm中间件...

    SpringBootLearning_forezp.tar.gz

    SpringBoot非官方教程 | 第七篇:springboot开启声明式事务 SpringBoot非官方教程 | 第八篇:springboot整合mongodb SpringBoot非官方教程 | 第九篇: springboot整合Redis 构架文档篇 SpringBoot非官方教程 | 第...

    Java Web程序设计教程

    13.3.3声明式事务处理 267 13.3.4标注式事务处理 268 13.4项目实战——公司人事管理 269 本章小结 276 课后练习 276 第14章spring与struts2、hibernate框架的整合基础 277 14.1spring与struts2的整合方式 277...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【Spring】Spring声明式事务的五个特性 94 传播性 94 隔离级别 95 只读 96 事务超时 97 回滚规则 97 【Spring】SpringMVC请求处理流程 97 【Mybatis】MyBatis中使用#和$书写占位符有什么区别? 100 【Mybatis】...

    asp.net知识库

    多样式星期名字转换 [Design, C#] .NET关于string转换的一个小Bug Regular Expressions 完整的在.net后台执行javascript脚本集合 ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则表达式 delegate vs. ...

Global site tag (gtag.js) - Google Analytics