`
cevin15
  • 浏览: 28378 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

关于Spring的事务管理,基于XML

阅读更多
在Spring中常用的事务传播行为

  • PROPAGATION_REQUIRED:如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。
  • PROPAGATION_SUPPORTS:如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行。
  • PROPAGATION_REQUIRES_NEW:总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。
  • PROPAGATION_NOT_SUPPORTED:总是非事务地执行,并挂起任何存在的事务。
  • PROPAGATION_NEVER:总是非事务地执行,如果存在一个活动事务,则抛出异常。

另外还有PROPAGATION_NESTED 与PROPAGATION_REQUIRES_NEW两种传播行为,不做介绍。

下面是基于xml的spring事务配置,使用拦截器来实现
配置Spring的事务管理器
<bean id="transactionManager"
	class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
	<property name="dataSource">
		<ref local="dataSource" />
	</property>
</bean>


定义Spring的事务拦截器TransactionInterceptor
<bean id="transactionInterceptor"
	class="org.springframework.transaction.interceptor.TransactionInterceptor">
	<!--  依赖注入上面定义的事务管理器transactionManager -->
	<property name="transactionManager" ref="transactionManager" />
	<!-- 定义需要进行事务拦截的方法及所采用的事务控制类型 -->
	<property name="transactionAttributes">
		<props>
			<!-- 所有方法均进行事务控制,如果当前没有事务,则新建一个事务 -->
			<prop key="*">PROPAGATION_REQUIRED</prop>
		</props>
	</property>
</bean>


定义要拦截的方法,这里用*表示拦截全部方法
<bean id="trasactionMethodPointcutAdvisor" 
	class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
	<property name="mappedNames">
		<list>
			<value>*</value>
		</list>
	</property>
	<property name="advice">
		<ref local="transactionInterceptor"/>
	</property>
</bean>


定义拦截的类,这里拦截beanId以Service结尾的类(beanNames,对应xml中的beanId),在这个类中的所有数据库操作都会被视为一个事务
<bean id="ServiceAutoProxyCreator"
	class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
	<property name="proxyTargetClass" value="true" />
	<property name="beanNames">
		<list>
			<value>*Service</value>
		</list>
	</property>
	<property name="interceptorNames">
		<list>
			<value>trasactionMethodPointcutAdvisor</value>
		</list>
	</property>
</bean>
分享到:
评论

相关推荐

    Spring基于XML方式配置事务

    这里我们主要探讨的是"Spring基于XML方式配置事务",这涉及到Spring的事务管理器、事务属性以及如何在XML配置文件中定义这些元素。 首先,Spring的事务管理分为两种模式:编程式事务管理和声明式事务管理。编程式...

    spring事务,xml方式和注解方式

    总结一下,Spring事务管理提供了XML配置和注解两种方式,使得开发者能够灵活地控制事务的边界和行为。XML方式适合于传统应用,而注解方式则更加简洁,易于理解和维护。无论选择哪种方式,Spring事务管理都能帮助我们...

    spring事务管理5种方法

    本篇文章将深入探讨Spring事务管理的五种方法,旨在帮助开发者更好地理解和运用这一核心特性。 首先,我们来了解什么是事务。在数据库操作中,事务是一组逻辑操作,这些操作要么全部成功,要么全部失败,确保数据的...

    spring3.0两种事务管理配置

    Spring 3.0 提供了两种事务管理配置方法:基于 XML 的事务管理和基于 @Transactional 的事务管理,这两种方法都是为了实现事务管理的目标,分别具有不同的配置方式和优缺点。 基于 XML 的事务管理 这种方法不需要...

    实验 spring 声明事务

    实验 "Spring 声明事务" 是 Java 高级编程中的一个重要环节,旨在让学生掌握 Spring 框架中声明式事务管理的配置和使用。在实际应用中,事务管理是确保数据一致性、完整性和可靠性的关键组件。Spring 提供了声明式...

    spring_事务管理(实例代码)

    Spring事务管理就是围绕这些特性来确保数据的一致性。 四、事务的传播行为 在Spring中,我们可以配置事务的传播行为,比如REQUIRED(默认,如果当前存在事务,则加入当前事务,否则新建一个事务)、PROPAGATION_...

    Spring JDBC与事务管理

    (2)(2) 在BookShopDao中添加一个purchase购书方法,其操作流程是获取书的单价-&gt;买书(更新库存)-&gt;更新账户余额,在BookShopDaoImp中实现该方法,并使用基于XML和Annotation的声明式事务管理来确保该购书过程能正常...

    Spring框架(基于xml、基于注解、AOP面相切面、事务)思维导图

    Spring框架(基于xml、基于注解、AOP面相切面、事务)思维导图

    spring事务与数据库操作

    ### Spring事务与数据库操作 #### 一、Spring的声明式事务管理 在现代软件开发中,事务处理是非常关键的一部分,特别是在涉及多个数据操作时。Spring框架提供了强大的事务管理能力,可以方便地集成到应用程序中。...

    spring,springmvc,mybatis基于xml文件整合(2)

    在本教程中,我们将深入探讨如何在Java Web开发中整合Spring、Spring MVC和MyBatis框架,特别是关注基于XML配置的Mapper接口方式。这三种技术的集成为开发高效、可维护的Web应用提供了强大支持。 首先,Spring是...

    Spring事务管理的三种方式

    基于XML的声明式事务管理是在Spring的配置文件中使用tx命名空间定义事务切面。例如: ```xml *" propagation="REQUIRED"/&gt; (* com.example.service.*.*(..))"/&gt; ``` 这段配置表示所有在...

    Spring事务管理4种方式

    本文将详细介绍Spring事务管理的四种方式:编程式事务管理、声明式事务管理、PlatformTransactionManager接口以及TransactionTemplate。 1. **编程式事务管理**:这是一种手动控制事务的方式,通过在代码中调用`...

    spring-tx事务管理实例

    在XML配置文件中,我们可以使用`&lt;tx:annotation-driven&gt;`元素开启基于注解的事务管理,或者在Java配置类中使用`@EnableTransactionManagement`注解。然后,在需要事务管理的方法上添加`@Transactional`注解,Spring...

    项目配置文件( spring-mvc.xml spring-mybatis.xml web.xml log4j.properties)

    这里提到的四个关键配置文件——`spring-mvc.xml`、`spring-mybatis.xml`、`web.xml`以及`log4j.properties`,对于一个基于Java的Web应用来说至关重要,特别是使用Spring MVC和MyBatis框架的时候。接下来,我们将...

    详细介绍Spring事务管理

    ### Spring事务管理详解 #### 一、Spring事务管理的重要性及必要性 在现代软件开发中,事务管理是一项至关重要的技术,特别是在涉及数据库操作时。事务能够确保一系列操作要么全部成功,要么全部失败,这对于保持...

    【基于xml方式】spring-kafka.zip

    当我们谈论"基于xml方式的Spring整合Kafka"时,意味着我们将使用XML配置文件来设置Spring与Kafka的集成。 Spring框架允许开发者通过XML配置来声明式地配置bean,包括数据源、事务管理器、以及与Kafka相关的消费者和...

    Spring 事务简单完整例子

    本文将深入探讨在Spring框架中如何管理事务,以“Spring 事务简单完整例子”为出发点,结合标签“spring,事务,jdbc事务”,我们将详细解释Spring事务管理的原理和实践。 首先,Spring提供了两种事务管理方式:编程...

    spring事务详解

    总之,Spring事务框架提供了一套功能强大、易于使用的事务管理解决方案,它不仅可以减少代码量,提高开发效率,还可以通过声明式配置来提升代码的可读性和可维护性。对于希望深入学习Spring事务管理的开发者而言,...

    Spring事务与Java事务比较

    Spring 支持在 XML 配置文件中使用 `&lt;tx:advice&gt;` 和 `&lt;tx:annotation-driven&gt;` 元素,以及在 Java 配置中使用 `@Transactional` 注解来声明事务。声明式事务管理使得事务管理更加透明,降低了业务代码的复杂性。 ...

    spring_如何管理事务的

    #### 一、Spring事务管理概述 Spring框架为开发者提供了一套强大的事务管理机制,它简化了应用程序中的事务控制逻辑,使得开发人员能够更加专注于业务逻辑的编写,而不是繁琐的事务管理代码。Spring支持两种类型的...

Global site tag (gtag.js) - Google Analytics