`
saybody
  • 浏览: 905436 次
  • 性别: 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框架提供了两种主要类型的事务管理方式:编程式事务管理和声明式事务管理。声明式事务管理通过XML配置或注解的形式定义事务边界,使得业务逻辑与事务控制分离。 ### ...

    spring编程式事务与声明式事务详解

    Spring 编程式事务与声明式事务详解 本文将详细解释 Spring 的编程式事务管理及声明式事务管理,帮助读者理清思路。 事务管理的重要性 事务管理对于企业应用至关重要。它保证了用户的每一次操作都是可靠的,即便...

    spring几种事务配置详解【精】

    声明式事务管理是Spring最常用的方式,它将事务管理与业务逻辑解耦,通过AOP(面向切面编程)实现。主要有两种实现方式: - **基于XML的声明式事务管理** 在Spring的配置文件中,通过`&lt;tx:advice&gt;`标签定义事务...

    Spring声明式事务配置管理方法

    以下是关于Spring声明式事务配置管理的详细说明: 1. **事务管理器配置**: 在`/WEB-INF/applicationContext.xml`文件中,我们需要定义一个事务管理器Bean。通常,对于Hibernate,我们会使用`...

    Spring ax/aop声明式事务配置实例

    本实例将深入探讨如何在Spring中使用AOP来实现声明式事务配置。 一、Spring AOP基础 AOP允许我们在程序运行时动态地将代码插入到其他对象中,它主要用来处理那些具有横切关注点的问题,如日志、异常处理和事务管理...

    spring事务配置详解

    Spring 提供了多种方式来配置事务管理,主要分为编程式事务管理和声明式事务管理。下面将详细介绍这五种Spring 事务配置方式。 1. **基于AOP代理的声明式事务** 这是最常见的配置方式,通过AOP代理在方法调用前后...

    spring2.0声明式事务

    ### Spring 2.0 声明式事务配置详解 #### 一、Spring 2.0 声明式事务概述 随着 Spring 框架的发展,从 Spring 1.x 到 Spring 2.0 版本,声明式事务管理方式有了显著改进。在 Spring 1.x 中,主要通过 AOP 方式实现...

    spring编程式事务与声明式事务详解[参照].pdf

    **声明式事务管理**则是基于AOP(面向切面编程)的,通过在XML配置文件或者使用Java注解(@Transactional)来声明哪些方法需要在事务中运行。这种方式使得事务管理与业务逻辑解耦,提高了代码的可读性和可维护性。...

    Spring 2.x配置详解

    ### Spring 2.x 配置详解 #### 关于 Spring 配置 自 Spring 2.0 起,推荐使用基于 XML Schema 的配置方式,这种方式比传统的 DTD 基础配置更为灵活。一个典型的 Spring 2.5 配置文件至少会包含以下结构: ```xml ...

    Spring 事务配置详解(多种配置方法)

    虽然灵活性高,但通常只适用于复杂场景或作为声明式事务的补充。 ### 5. **JTA(Java Transaction API)事务管理** 在分布式系统中,可能需要跨越多个数据源的事务管理。Spring支持JTA事务管理,使用`...

    spring事务详解

    3. 声明式事务管理:利用Spring AOP的特性,Spring支持声明式事务管理,即可以在配置文件或注解中声明事务属性,这使得事务管理更加灵活和方便。 Spring的事务管理还提供了强大的事务传播行为和隔离级别配置,...

    JSP 中spring事务配置详解.docx

    Spring事务管理主要有两种方式:编程式事务管理和声明式事务管理。编程式事务管理需要在代码中手动调用开始事务、提交事务、回滚事务等方法,而声明式事务管理则是通过配置来定义事务边界,更易于维护和使用。本文...

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

    编程式事务是通过编写代码来管理事务,声明式事务则是通过配置文件或注解来管理事务。 事务属性 Spring的事务属性是通过TransactionDefinition接口定义的,该接口提供了以下几个方法: * getIsolationLevel():...

    Spring事务详解

    总结来说,Spring的事务管理是其强大功能的重要组成部分,通过声明式事务管理,我们可以轻松地在代码中实现事务控制,同时保持代码的简洁性和可维护性。了解和熟练掌握Spring事务管理,对于提升Java企业级应用的稳定...

    全面分析_Spring_的编程式事务管理及声明式事务管理

    ### Spring的编程式事务管理与声明式事务管理详解 #### 引言 Spring框架作为Java企业级开发的首选,其事务管理模块是实现业务逻辑可靠性和数据一致性的重要组成部分。Spring支持两种事务管理方式:编程式事务管理...

Global site tag (gtag.js) - Google Analytics