`

spring 事务管理和事务传播的配置

 
阅读更多

spring  事务管理的两种配置方法

1. xml配置

2. 注解

 

一、xml配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">

	<context:component-scan base-package="com.spring"></context:component-scan>

	<!-- 1,引入外部contextSchema命名空间; 2,导入外部配置文件 -->
	<context:property-placeholder location="classpath:./jdbc.properties" />
	
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
		destroy-method="close">
		<property name="driverClass" value="${jdbc.driverClassName}" />
		<property name="jdbcUrl" value="${jdbc.url}" />
		<property name="user" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
	</bean>
	
	<!-- 创建spring NamedParameter JdbcTemplate -->
	<bean class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate" id="namedParameterJdbcTemplate">
		<constructor-arg name="dataSource" ref="dataSource"/>
	</bean>
	
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	
	<!-- 配置事务通知 -->
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="*"/>
		</tx:attributes>
	</tx:advice> 
	
	<!-- 配置事务切面  -->
	<aop:config>
		<aop:pointcut expression="execution(* com.spring.service.*.*(..))" id="serviceMethod"/>
		<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethod"/>
	</aop:config>
	</beans>

 这样在com.spring.service包及其子类包都被事务管理了, 可更改<tx:method name="*"/>,更合理支持事务传播。

 

二、注解方式

xml配置更改为:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">

	<context:component-scan base-package="com.spring"></context:component-scan>

	<!-- 1,引入外部contextSchema命名空间; 2,导入外部配置文件 -->
	<context:property-placeholder location="classpath:./jdbc.properties" />
	
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
		destroy-method="close">
		<property name="driverClass" value="${jdbc.driverClassName}" />
		<property name="jdbcUrl" value="${jdbc.url}" />
		<property name="user" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
	</bean>
	
	<!-- 创建spring NamedParameter JdbcTemplate -->
	<bean class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate" id="namedParameterJdbcTemplate">
		<constructor-arg name="dataSource" ref="dataSource"/>
	</bean>
	
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	
	<tx:annotation-driven transaction-manager="transactionManager"/>

</bean>

 并且要在支持事务管理的类或者方法上加注解:

@Transactional

 

 

 

参考文章:

http://blog.sina.cn/dpool/blog/s/blog_7ffb8dd501014d8d.html

http://lzh166.iteye.com/blog/1134146

http://www.cnblogs.com/rushoooooo/archive/2011/08/28/2155960.html

分享到:
评论

相关推荐

    Spring事务管理Demo

    Spring事务管理的目的是确保数据的一致性和完整性,尤其是在多操作、多资源的环境中。本Demo将深入探讨Spring如何实现事务的管理。 首先,Spring提供了两种主要的事务管理方式:编程式事务管理和声明式事务管理。 ...

    Spring中事务的传播属性详解

    本文将详细介绍Spring中的事务传播属性,并通过具体的例子来解释每种传播行为的特点。 #### 二、事务传播属性概述 事务传播行为(Propagation)定义了当一个事务方法被另一个事务方法调用时的行为。在Spring中,...

    spring 事务传播 demo

    总之,“spring 事务传播 demo”将展示如何利用Spring的事务传播特性来处理复杂的业务场景,帮助开发者更好地理解和运用这一强大的工具。通过学习和实践这个示例,你将能够掌握在多层方法调用中如何优雅地管理和协调...

    spring3.0两种事务管理配置

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

    Spring事务管理的jar包

    如传播行为(PROPAGATION_REQUIRED、PROPAGATION_SUPPORTS等)、隔离级别(ISOLATION_DEFAULT、ISOLATION_READ_UNCOMMITTED等)和事务超时设置,允许开发者根据业务需求进行精细的事务配置。 总的来说,Spring事务...

    Spring事务管理失效原因汇总

    总结来说,Spring事务管理失效的原因是多方面的,涵盖从代理模式原理到AOP的实现细节,再到异常处理机制,以及事务传播和隔离级别的配置等多个层面。开发者需要深入理解Spring框架的内部机制,才能在实际开发中有效...

    spring 事务管理的理解

    Spring 框架是Java开发中...理解并熟练掌握Spring事务管理,对于提升应用程序的稳定性和可靠性至关重要。在实际开发中,结合声明式事务管理、事务传播行为、隔离级别和回滚规则,可以有效地确保数据的完整性和一致性。

    spring事务的传播特性和事务隔离级别

    ### Spring事务的传播特性和事务隔离级别 #### 一、Spring事务的传播特性(Propagation) 在Spring框架中,事务管理不仅提供了ACID属性的支持,还引入了事务的传播特性,这些特性决定了当一个方法调用另一个方法时,...

    Spring事务流程图

    Spring事务管理是Spring框架的核心特性之一,主要用于处理应用程序中的数据一致性问题。在Spring中,事务管理分为编程式和声明式两种方式。本篇文章将详细解释Spring事务管理的流程,以及如何通过时序图来理解这一...

    Spring事务传播机制.docx

    Spring 事务传播机制是指在 Spring 框架中,事务的传播和嵌套机制。当我们在使用 Spring 所提供的事务功能时,如果是仅仅处理单个的事务,是比较容易把握事务的提交与回滚,不过一旦引入嵌套事务后,多个事务的回滚...

    spring事务与数据库操作

    这段代码配置了一个事务管理器,并定义了一个事务顾问(`tx:advice`),该顾问指定了不同方法名前缀对应的不同事务传播行为。例如,所有以`save`开头的方法都将使用`REQUIRED`传播行为,这意味着如果当前存在事务,...

    spring 自定义事务管理器,编程式事务,声明式事务@Transactional使用

    在Spring框架中,事务管理是核心功能之一,它确保了数据操作的一致性和完整性。本教程将深入探讨如何在Spring中实现自定义事务管理器...这将加深你对Spring事务管理的理解,帮助你在实际项目中更加熟练地运用这些技术。

    实验 spring 声明事务

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

    Spring事务传播Demo.zip

    总结来说,"Spring事务传播Demo"是一个用于学习和演示Spring事务管理和传播行为的实例,通过分析和实践这个Demo,开发者可以更好地理解和掌握Spring在处理事务时的复杂情况,提升在实际项目中的应用能力。...

    spring事务管理

    Spring事务管理主要包括两种类型:编程式事务管理和声明式事务管理。 - **编程式事务管理**:通过编写代码来控制事务的开始、提交或回滚等操作。这种方式灵活度高,但会使得代码变得冗余且难以维护。 - **声明式...

    SPRING事务传播特性&事务隔离级别

    ### Spring 事务传播特性和事务隔离级别详解 #### 一、Spring 事务传播特性 在进行多层服务架构设计时,事务的管理尤其重要。为了确保数据的一致性,Spring 提供了一种灵活的方式来控制事务的传播行为。下面详细...

    spring 事务传播

    通过上述对Spring事务传播行为的详细介绍,我们可以看出,正确理解和应用这些传播行为对于构建健壮的事务管理机制至关重要。每种传播行为都有其特定的应用场景和限制条件,开发者应根据具体的业务逻辑和需求来合理...

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

    这里的`sessionFactory`属性引用了Hibernate的SessionFactory Bean,它负责创建和管理Session。 2. **事务传播行为**: 事务的传播行为定义了在一个事务方法被另一个事务方法调用时,如何处理新的事务上下文。在...

    Spring事务的传播特性和隔离级别

    ### Spring事务的传播特性和隔离级别 #### 一、事务的基本概念 在计算机科学中,事务(transaction)是指一系列操作的集合,这些操作要么全部成功完成,要么全部失败回滚,确保数据的一致性和完整性。事务具备四个...

Global site tag (gtag.js) - Google Analytics