`

spring 声明式事务 transaction

阅读更多

声明式事务处理(Declarative transactions)

我们来介绍声明式事务处理(Declarative transactions)。它是Spring目前最重要的一个应用。声明式事务处理是由Spring AOP实现的,大多数Spring用户选择声明式事务管理。这是最少影响应用代码的选择,因而这是和非侵入性的轻量级容器的观念是一致的。

类似于EJB的容器管理事务(Container Managed Transaction)可以在配置文件中声明对事务的支持,可以精确到单个方法的级别,这通常通过TransactionProxyFactoryBean设置Spring事务代理。我们需要一个目标对象包装在事务代理中。这个目标对象一般是一个普通Java对象的bean。当我们定义TransactionProxyFactoryBean时,必须提供一个相关的PlatformTransactionManager的引用和事务属性。事务属性含有上面描述的事务定义。

在项目中,我们使用了以下配置。

 

<bean id="orderService" class="org.springframework.transaction.

    interceptor.TransactionProxyFactoryBean">

 

 <property name="transactionManager">

  <ref local="myTransactionManager"/>

 </property>

 

 <property name="target"><ref local="orderTarget"/></property>

 

 <property name="transactionAttributes">

 <props>

    <prop key="find*">

   PROPAGATION_REQUIRED,readOnly,-OrderException

    </prop>

    <prop key="save*">

   PROPAGATION_REQUIRED,-OrderMinimumAmountException

    </prop>

    <prop key="update*">

   PROPAGATION_REQUIRED,-OrderException

    </prop>

 </props>

 </property>

</bean>

通过以上配置声明,Spring会自动帮助我们处理事务。也就是说,对于orderTarget类中的所有以find、save和update开头的方法,自动增加事务管理服务。

这里的transaction attributes属性定义在org.springframework.transaction.interceptor.Name MatchTransactionAttributeSource中的属性格式来设置。这个包括通配符的方法名称映射是很直观的。注意,save*的映射的值包括回滚规则。添加的-OrderMinimumAmountException指定,如果方法抛出OrderMinimumAmountException或它的子类,事务将会自动回滚。可以用逗号分隔定义多个回滚规则。-前缀强制回滚,+前缀指定提交(这允许即使抛出unchecked异常时也可以提交事务,当然你自己要明白自己在做什么)。

TransactionProxyFactoryBean允许你通过“preInterceptors”和“postInterceptors”属性设置“前”或“后”通知来提供额外的拦截行为。可以设置任意数量的“前”和“后”通知,它们的类型可以是Advisor(可以包含一个切入点)、MethodInterceptor或被当前Spring配置支持的通知类型(例如,ThrowAdvice、AfterReturningtAdvice或BeforeAdvice,这些都是默认支持的)。这些通知必须支持实例共享模式。如果你需要高级AOP特性来使用事务,那最好使用通用的org.springframework.aop.framework.ProxyFactoryBean,而不是TransactionProxyFactoryBean实用代理创建者。

也可以设置自动代理:配置AOP框架,不需要单独的代理定义类就可以生成类的代理。

分享到:
评论

相关推荐

    spring声明式事务处理demo

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

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

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

    spring声明式事务配置

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

    实验 spring 声明事务

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

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

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

    spring声明式事务.zip

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

    使用Spring的声明式事务----AOP方式

    在Spring框架中,声明式事务管理是通过AOP(面向切面编程)实现的,它为开发者提供了方便、高效且灵活的事务管理机制。本文将深入探讨如何利用Spring的声明式事务来处理业务操作中的数据一致性问题,以及相关源码...

    Spring使用XML配置声明式事务

    在Spring框架中,声明式事务管理是实现事务处理...在博文"Spring使用XML配置声明式事务"中,作者详细讲解了每个步骤,并可能通过示例代码展示了如何实际应用这些配置,帮助读者更好地理解和掌握Spring声明式事务管理。

    使用Spring的声明式事务----Annotation注解方式

    这是Spring声明式事务的核心注解,可以用于类或方法级别。当应用于类时,该类的所有公共方法都将包含在事务中。若应用于方法,只有该方法及其子方法才会被事务管理。注解中的属性包括`propagation`(事务传播行为)...

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

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

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

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

    spring学习笔记(十六)-声明式事务的例子

    在Spring框架中,声明式事务管理是其核心特性之一,它允许开发者通过配置来控制事务的行为,而无需在代码中显式地管理事务的开始、提交、回滚等操作。这种方式使得事务管理更加灵活,也使得代码更加简洁,易于维护。...

    Hibernate编程式事务与Spring Aop的声明式事务(spring与hibernate集成)

    本主题将深入探讨Hibernate的编程式事务管理和Spring AOP的声明式事务管理,以及两者如何在实际项目中集成使用。 **Hibernate编程式事务管理** Hibernate作为流行的ORM(对象关系映射)框架,提供了对JDBC事务的...

    Spring 2.5整合iBATIS 2.3并使用Spring的声明式事务管理

    本篇将详细介绍如何在Spring 2.5版本中整合iBATIS 2.3,并利用Spring的声明式事务管理,以提升应用程序的稳定性和可维护性。 首先,我们需要了解Spring 2.5和iBATIS 2.3的基本概念。Spring 2.5是Spring框架的一个...

    06丨20%的业务代码的Spring声明式事务,可能都没处理正确

    06丨20%的业务代码的Spring声明式事务,可能都没处理正确 Spring 针对 Java Transaction API (JTA)、JDBC、Hibernate 和 Java Persistence API (JPA) 等事务 API,实现了一致的编程模型,而 Spring 的声明式事务功能...

    spring3,hibernate4 配置声明式事务管理(annotation方式)

    本篇将详细介绍如何在Spring 3和Hibernate 4中通过注解来实现声明式事务管理。 首先,我们需要在项目中引入Spring和Hibernate的依赖库。这通常通过Maven或Gradle等构建工具完成,确保添加了相应的依赖项。 接着,...

    Spring声明式事务配置模板2.x

    在Spring框架中,声明式事务管理是其核心特性之一,它极大地简化了应用程序中的事务处理。Spring 2.x版本的声明式事务配置模板是开发者常用的一种方式,它通过AOP(面向切面编程)实现事务的自动管理,使得开发者...

    spring2.0声明式事务

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

Global site tag (gtag.js) - Google Analytics