- 浏览: 147947 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
august_000:
很有道理,我已经亲自测试过了:
public class ...
单例模式之线程安全解析 -
Chris_bing:
一个单例有这么多名堂,最后那个内部类的解决方案很有创意啊,受教 ...
单例模式之线程安全解析
Spring声明式事务功能应该是大家应用Spring中使用的最多的功能之一了,的确该功能极大的简化了大家对数据库操作的。目前Spring支持的声明式事务有两个配置方式,一种是XML配置方式,另一种是注解方式。
针对配置这块,XML配置同学们会觉得比较麻烦,特别是针对事务属性的配置,所以补充一下本块配置说明,特分享给大家,希望对大家有帮助。
下面是Spring的XML配置事务比较常用的方式,也是我们这边事务XML配置事务的使用方式,本文以该种配置为例,进行说明。
配置详解说明如下:
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
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
XML配置事务方式的优点就是不用改任何代码,希望此份配置详解可以对大家有帮助
发表评论
-
(转)Java几款性能分析工具的对比
2013-11-01 14:26 1033来源:http://www.javaweb.cc/langua ... -
HashMap的遍历
2013-11-01 14:15 8831、新建一个HashMap Map<Integer , ... -
java将汉子转换成汉语拼音
2013-11-01 13:51 929import net.sourceforge.pinyin4j ... -
Spring加载properties文件的两种方式
2013-10-31 10:05 0在spring中可以通过下面的方式将配置文件中的项注入到配置中 ... -
动态加载spring .xml中的bean对象
2013-10-30 15:27 0在java中如何取得spring.xml中加载的bean对象? ... -
(转)Spring mvc+hibernate+freemarker(实战)
2013-10-28 19:40 988http://zz563143188.iteye.com/bl ... -
(转)Java之美[从菜鸟到高手演变]系列之博文阅读导航
2013-10-28 17:00 1732Java之美[从菜鸟到高手演变]系列之博文阅读导航 http: ... -
(转)openssl 制作证书和签名java方法
2013-10-28 15:03 0Win32OpenSSL_Light-0_9_8k.exe ... -
(转)面向接口编程详解
2013-10-25 12:34 5老文章,自己学习。 面向接口编程详解(一) http://w ... -
(转)依赖注入那些事儿
2013-10-25 12:31 657http://www.cnblogs.com/leoo2sk/ ... -
(转)细说业务逻辑
2013-10-25 12:30 553前篇 http://www.cnblogs.com/leoo2 ... -
(转)Java架构师之路:JAVA程序员必看的15本书
2013-10-08 18:24 0作为Java程序员来说,最 ... -
证书解析与转换
2013-09-26 14:34 0爽哥证书生成步骤: 1. ... -
Java获取CPU ID和磁盘ID
2013-09-25 20:18 0原文链接:http://www.rgagnon.com/jav ... -
Java编程之备用程序段
2013-09-25 14:57 0记录一些程序段,供日常备用,持续增加中…… 1. Java中 ... -
(转)Java编程之AOP
2013-09-25 14:45 0链接: http://hw19886200.iteye.com ... -
Java编程之性能优化
2013-09-25 14:28 760最近的机器内存又爆满 ... -
使用axis2传输附件
2013-09-25 10:40 1050服务端Service文件: import java.io. ... -
Java应用程序项目打包成exe文件
2013-09-23 09:16 01.程序打包 首先将程序打成Jar包,打包命 ... -
(转)nginx 总结
2013-09-18 14:27 2160原文链接:http://saiyaren.iteye.com/ ...
相关推荐
### 标题解读:Spring声明式事务配置 Spring框架提供了两种主要类型的事务管理方式:编程式事务管理和声明式事务管理。声明式事务管理通过XML配置或注解的形式定义事务边界,使得业务逻辑与事务控制分离。 ### ...
Spring 编程式事务与声明式事务详解 本文将详细解释 Spring 的编程式事务管理及声明式事务管理,帮助读者理清思路。 事务管理的重要性 事务管理对于企业应用至关重要。它保证了用户的每一次操作都是可靠的,即便...
声明式事务管理是Spring最常用的方式,它将事务管理与业务逻辑解耦,通过AOP(面向切面编程)实现。主要有两种实现方式: - **基于XML的声明式事务管理** 在Spring的配置文件中,通过`<tx:advice>`标签定义事务...
以下是关于Spring声明式事务配置管理的详细说明: 1. **事务管理器配置**: 在`/WEB-INF/applicationContext.xml`文件中,我们需要定义一个事务管理器Bean。通常,对于Hibernate,我们会使用`...
本实例将深入探讨如何在Spring中使用AOP来实现声明式事务配置。 一、Spring AOP基础 AOP允许我们在程序运行时动态地将代码插入到其他对象中,它主要用来处理那些具有横切关注点的问题,如日志、异常处理和事务管理...
Spring 提供了多种方式来配置事务管理,主要分为编程式事务管理和声明式事务管理。下面将详细介绍这五种Spring 事务配置方式。 1. **基于AOP代理的声明式事务** 这是最常见的配置方式,通过AOP代理在方法调用前后...
### Spring 2.0 声明式事务配置详解 #### 一、Spring 2.0 声明式事务概述 随着 Spring 框架的发展,从 Spring 1.x 到 Spring 2.0 版本,声明式事务管理方式有了显著改进。在 Spring 1.x 中,主要通过 AOP 方式实现...
**声明式事务管理**则是基于AOP(面向切面编程)的,通过在XML配置文件或者使用Java注解(@Transactional)来声明哪些方法需要在事务中运行。这种方式使得事务管理与业务逻辑解耦,提高了代码的可读性和可维护性。...
### Spring 2.x 配置详解 #### 关于 Spring 配置 自 Spring 2.0 起,推荐使用基于 XML Schema 的配置方式,这种方式比传统的 DTD 基础配置更为灵活。一个典型的 Spring 2.5 配置文件至少会包含以下结构: ```xml ...
虽然灵活性高,但通常只适用于复杂场景或作为声明式事务的补充。 ### 5. **JTA(Java Transaction API)事务管理** 在分布式系统中,可能需要跨越多个数据源的事务管理。Spring支持JTA事务管理,使用`...
3. 声明式事务管理:利用Spring AOP的特性,Spring支持声明式事务管理,即可以在配置文件或注解中声明事务属性,这使得事务管理更加灵活和方便。 Spring的事务管理还提供了强大的事务传播行为和隔离级别配置,...
编程式事务是通过编写代码来管理事务,声明式事务则是通过配置文件或注解来管理事务。 事务属性 Spring的事务属性是通过TransactionDefinition接口定义的,该接口提供了以下几个方法: * getIsolationLevel():...
总结来说,Spring的事务管理是其强大功能的重要组成部分,通过声明式事务管理,我们可以轻松地在代码中实现事务控制,同时保持代码的简洁性和可维护性。了解和熟练掌握Spring事务管理,对于提升Java企业级应用的稳定...
Spring事务管理主要有两种方式:编程式事务管理和声明式事务管理。编程式事务管理需要在代码中手动调用开始事务、提交事务、回滚事务等方法,而声明式事务管理则是通过配置来定义事务边界,更易于维护和使用。本文...