`
uule
  • 浏览: 6346958 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

Spring的声明式事务

阅读更多

声明式事务
  声明式事务(Programmatic transaction management)是Spring提供的对程序事务管理的方式之一。
  Spring的声明式事务顾名思义就是采用声明的方式来处理事务。这里所说的声明,就是指在配置文件中申明 。用在Spring配置文件中声明式的处理事务来代替代码式的处理事务。这样的好处是,事务管理不侵入开发的组件,具体来说,业务逻辑对象就不会意识到正在事务管理之中 ,事实上也应该如此,因为事务管理是属于系统层面的服务,而不是业务逻辑的一部分,如果想要改变事务管理策划的话,也只需要在定义文件中重新配置即可;在不需要事务管理的时候,只要在设定文件上修改一下,即可移去事务管理服务,无需改变代码重新编译,这样维护起来极其方便。
  Spring使用AOP来完成声明式的事务管理 ,因而声明式事务是以方法为单位,Spring的事务属性自然就在于描述事务应用至方法上的策略,在Spring中事务属性有以下四个参数:
  1.传播行为
  2.隔离级别
  3.只读提示
  4.事务超时期间

来自:百度百科

 

Spring 中进行事务管理的通常方式是利用AOP(面向切片编程)的方式,为普通java类封装事务控制,它是通过动态代理实现的,由于接口是延迟实例化的, spring在这段时间内通过拦截器,加载事务切片。原理就是这样。

 

Spring没有直接管理事务,它有许多供选择的事务管理器,将事务管理的责任委托给某个特定平台的事务实现。



 每个事务管理器都充当了对特定平台的失误实现的代理。这样就只需与Spring中的事务打交道,而不用关心实际上事务实现是什么样的。

 

Spring中的声明式事务,需用到TransactionProxyFactoryBean

声明式事务管理的配置方式,通常有如下三种:
1.使用TransactionProxyFactoryBean为目标bean生成事务代理的配置。此方式是最传统,配置文件最臃肿、难以阅读的方式。
2.采用bean继承的事务代理配置方式,比较简洁,但依然是增量式配置。
3.使用BeanNameAutoProxyCreator,根据bean name自动生成事务代理的方式,这是直接利用Spring的AOP框架配置事务代理的方式,需要对Spring的AOP框架有所理解。但这种方式避免了增量式配置,效果非常不错。
4.DefaultAdvisorAutoProxyCreator:这也是直接利用Spring的AOP框架配置事务代理的方式,效果也非常不多,只是这种配置方式的可读性不如第三种方式。

http://zfsn.iteye.com/blog/663952

http://blog.csdn.net/hangke/archive/2007/12/05/1917904.aspx

 

TransactionProxyFactoryBean是什么时候被实例化的?它的实例在哪里被使用?是如何使用的?有何具体行为?

问题1:TransactionProxyFactoryBean在拦截器成功拦截到数据库请求的时候被实例化的,其实这也就是所谓的反向控制(你叫它依赖注入也行)。
问题2:TransactionProxyFactoryBean在拦截器成功拦截到数据库请求的时候被使用。
问题3:TransactionProxyFactoryBean在拦截器成功拦截到数据库请求后,会自动将该数据库操作加上事务控制。
问题3:成功时提交事务,失败时回滚事务。
<!-- 定义TransactionProxyFactoryBean,该bean是个bean后处理器,无需被引用,因此没有id属性-->  
    <bean class="org.springframework.aop.framework.autoproxy.TransactionProxyFactoryBean">  
     <!--  指定对满足哪些bean name的bean自动生成业务代理 -->  
        <property name="beanNames">  
            <!--  下面是所有需要自动创建事务代理的bean-->  
            <list>  
                <value>*Dao</value>  
            </list>  
            <!--  此处可增加其他需要自动创建事务代理的bean-->  
        </property>  
        <!--  下面定义TransactionProxyFactoryBean所需的事务拦截器-->  
        <property name="interceptorNames">  
            <list>  
                <value>transactionInterceptor</value>  
                    <!-- 此处可增加其他新的Interceptor -->  
            </list>  
        </property>  
    </bean>

  • 大小: 47.8 KB
分享到:
评论

相关推荐

    Spring声明式事务

    spring声明式事务实例 可复制修改使用。。。。。。。。。。

    Spring源代码解析(六):Spring声明式事务处理.doc

    Spring 声明式事务处理 Spring 中的事务处理可以分为两种方式:声明式事务处理和编程式事务处理。声明式事务处理通过 AOP 的实现,把事务管理代码作为方面封装到业务代码中,使得事务管理代码和业务代码解藕。这...

    Spring声明式事务处理

    文件名为`Spring声明式事务处理-1.mht`到`Spring声明式事务处理-5.mht`,通过阅读这些文件,你将能够深入理解Spring声明式事务处理的各个方面,包括配置、使用场景、最佳实践以及常见问题的解决方法。

    spring声明式事务处理demo

    在这个"spring声明式事务处理demo"中,我们将探讨如何在MyEclipse环境下实现这一功能。 首先,我们要理解Spring事务管理的两种主要方式:编程式事务管理和声明式事务管理。编程式事务管理通常通过AOP(面向切面编程...

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

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

    spring声明式事务管理配置方式

    在"spring声明式事务管理配置方式"中,主要涉及到以下几个关键知识点: 1. **Spring事务管理器(Transaction Manager)**: - Spring支持多种事务管理器,如DataSourceTransactionManager(用于JDBC事务)和...

    spring声明式事务配置

    ### 标题解读:Spring声明式事务配置 Spring框架提供了两种主要类型的事务管理方式:编程式事务管理和声明式事务管理。声明式事务管理通过XML配置或注解的形式定义事务边界,使得业务逻辑与事务控制分离。 ### ...

    spring声明式事务.zip

    本文将深入探讨Spring声明式事务的实现机制、优缺点以及如何在实际项目中进行配置和使用。 1. **声明式事务管理概述** 声明式事务管理与编程式事务管理相对,后者需要开发者在代码中显式调用开始、提交、回滚等...

    Spring 声明式事务和Spring 编程式事务

    Spring 声明式事务和Spring 编程式事务

    Spring Boot多数据源(支持Spring声明式事务切换和回滚).pdf

    《Spring Boot多数据源(支持Spring声明式事务切换和回滚)》 Spring Boot多数据源技术是构建高效、灵活的多租户SaaS架构的关键。在本文中,我们将深入探讨如何实现动态数据源切换,支持Spring声明式事务管理,并讨论...

    实验 spring 声明事务

    1. **配置Spring声明式事务**: 在Spring中,声明式事务管理依赖于AOP(面向切面编程)来实现。首先,需要配置一个事务管理器,通常使用`DataSourceTransactionManager`,它与数据源`dataSource`关联。然后,通过`...

    Spring Data JPA系列4——Spring声明式事务处理与多数据源支持.doc

    Spring 声明式事务处理与多数据源支持 在大部分涉及到数据库操作的项目里面,事务控制、事务处理都是一个无法回避的问题。Spring 框架提供了声明式事务处理机制,使得业务代码中进行事务控制操作起来非常简单。只需...

    spring声明式事务配置方法.docx

    Spring声明式事务管理是Spring框架中的一个重要特性,它允许开发者在不修改代码的情况下,通过配置来控制事务的边界。这种方式极大地简化了事务管理,使得事务处理与业务逻辑解耦,提高了代码的可维护性和可测试性。...

    spring声明式事务管理+jdbc+连接池.zip

    本资料包"spring声明式事务管理+jdbc+连接池.zip"显然是针对Spring框架在数据库操作方面的深入学习,特别是如何利用Spring进行声明式事务管理和JDBC操作,以及如何配置和使用数据库连接池。接下来,我们将详细探讨这...

    深入理解Spring声明式事务:源码分析与应用实践

    Spring声明式事务是Java开发中不可或缺的一部分,它利用Spring的AOP(面向切面编程)和代理机制,为开发者提供了一种简洁的方式来管理事务。在本文中,我们将深入探讨Spring声明式事务的工作原理,源码分析,以及...

    Spring 事务 (二) Spring 声明式事务 配置

    本文主要探讨Spring声明式事务管理的配置,这是Spring提供的一种简便的事务管理方式,允许开发者在不编写任何事务管理代码的情况下实现事务控制。这种方式极大地提高了代码的可维护性和可读性。 首先,我们要理解...

    spring 声明式事务

    1.本例子的使用了 ssh 框架 2.本例子DAO层 使用了 getHibernateTemplate 来实现数据的新增修改和删除 3.本例子使用了声明式...4.本例子提供了详细的使用方法,可以根据 readme.txt 来逐步的验证声明式事务是否起作用

    Spring声明式事务及BaseDao完整版

    一、Spring声明式事务管理 1. **什么是事务**:事务是数据库操作的基本单元,它保证了数据的一致性和完整性。一个事务中的所有操作要么全部成功,要么全部失败。 2. **事务特性**:事务通常遵循ACID原则,即原子性...

Global site tag (gtag.js) - Google Analytics