spring事务管理分为代码管理和配置文件管理
配置文件管理分为5种方法
详细参考:http://www.blogjava.net/robbie/archive/2009/04/05/264003.htm
http://sunlf.iteye.com/blog/584769
针对ssh项目的说明:
spring事务管理是在service层进行事务管理
对于面向切面编程要注意的问题
<aop:pointcut id="allManagerMethod"
expression="execution(* org.ethip.catalog.service.*.*(..))"/> 中第一个星号表示方法的可见性,public那种,第二个星号表示具体的类,第三个表示方法。
http://www.blogjava.net/algz/articles/262941.html
<bean id="fooService" class="x.y.service.DefaultFooService"/>
<!-- the transactional advice (i.e. what 'happens'; see the <aop:advisor/>
bean below) -->
<tx:advice id="txAdvice" transaction-manager="txManager">
<!-- the transactional semantics... -->
<tx:attributes>
<!-- all methods starting with 'get'
are read-only -->
<tx:method name="get*" read-only="true"/>
<!-- other methods use the default transaction settings (see below) -->
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<!-- ensure that the above transactional advice runs for any executionof an operation defined by the FooService
interface -->
<aop:config>
<aop:pointcut id="fooServiceOperation" expression="execution(* x.y.service.FooService.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="fooServiceOperation"/>
</aop:config>
<!-- ******************************************************************-->
<!-- don't forget the DataSource
-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@rj-t42:1521:elvis"/>
<property name="username" value="scott"/>
<property name="password" value="tiger"/>
</bean>
<!-- similarly, don't forget the (particular) PlatformTransactionManager
-->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- other <bean/>
definitions here -->
</beans>
我们来分析一下上面的配置。我们要把一个服务对象('fooService'
bean)做成事务性的。我们想施加的事务语义封装在<tx:advice/>
定义中。<tx:advice/>
“把所有以 'get'
开头的方法看做执行在只读事务上下文中,其余的方法执行在默认语义的事务上下文中”。 其中的 'transaction-manager'
属性被设置为一个指向 PlatformTransactionManager
bean的名字(这里指 'txManager'
),该bean将实际上实施事务管理。
配置中最后一段是 <aop:config/>
的定义,它确保由 'txAdvice'
bean定义的事务通知在应用中合适的点被执行。首先我们定义了 一个切面,它匹配 FooService
接口定义的所有操作,我们把该切面叫做 'fooServiceOperation'
。然后我们用一个通知器(advisor)把这个切面与 'txAdvice'
绑定在一起,表示当 'fooServiceOperation'
执行时,'txAdvice'
定义的通知逻辑将被执行。
一个普遍性的需求是让整个服务层成为事务性的。满足该需求的最好方式是让切面表达式匹配服务层的所有操作方法。例如:
<aop:config>
<aop:pointcut id="fooServiceMethods" expression="execution(* x.y.service.*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="fooServiceMethods"/>
</aop:config>
分享到:
相关推荐
标题“Spring事务管理失效原因汇总”指出了本文的核心内容是分析在使用Spring框架进行事务管理时可能遇到的问题及其原因。描述部分进一步说明了事务失效的后果往往不明显,容易在测试环节被忽略,但在生产环境中出现...
以下是关于"spring ibatis 配置(包括事务管理)"的详细说明: 1. **引入依赖**:首先,我们需要在项目中添加Spring和iBatis的相关依赖。通常,这会在Maven或Gradle的配置文件中完成,确保引入了正确的版本。 2. *...
Spring提供了两种事务管理方式:编程式事务管理和声明式事务管理。其中,声明式事务管理因其简洁性和易用性而更受欢迎。本文将详细介绍Spring中的事务传播属性,并通过具体的例子来解释每种传播行为的特点。 #### ...
Spring 声明式事务管理是Spring框架中的一个重要特性,它允许开发者在不编写任何事务管理代码的情况下,通过配置来管理事务。这种方式极大地简化了事务处理,并提高了代码的可维护性。以下是关于Spring声明式事务...
### Spring事务配置的五种方式详解 #### 一、引言 在企业级应用开发中,事务处理是非常重要的一部分,特别是在涉及多个数据库操作时。Spring框架提供了强大的事务管理功能,支持编程式和声明式两种事务处理方式。...
Spring声明式事务管理是Spring框架的核心特性之一,它允许开发者在不侵入业务代码的情况下,对应用程序的事务进行管理。这种方式极大地提高了代码的可维护性和灵活性。以下是对Spring声明式事务配置的详细说明: 1....
其中,Spring的分布式事务管理是其核心特性之一,它允许开发者在分布式系统环境中处理复杂的事务逻辑。本篇将深入探讨Spring如何实现分布式事务,以及涉及到的相关技术。 首先,分布式事务是指在多个数据库或者服务...
本文将详细介绍Spring事务配置的五种方式,帮助你深入理解如何在Spring应用中管理事务。 1. **基于XML的声明式事务管理** 第一种方式是在每个Bean上使用代理来实现事务管理。首先,配置`DataSource`,通常是`...
本篇文章将深入探讨Spring与Hibernate整合下的事务管理,帮助开发者理解并掌握这一关键知识点。 首先,Spring框架提供了声明式事务管理,这是通过AOP(Aspect-Oriented Programming,面向切面编程)实现的。在...
csdn博客竟然也出问题,好不容总结一下,竟然发不了博客。依稀csdn! 1、spring与hibernate事务管理 2、aop 3、事务管理,声明式。 3、事务传递特性说明
下面是五种Spring事务配置方式的详细说明: **第一种方式:基于代理的声明式事务管理** 在这个配置中,每个业务对象(如DAO)都有一个事务代理。`TransactionProxyFactoryBean`被用来创建这个代理,它需要指定事务...
在Java开发中,使用JDBC、Spring和MySQL进行数据操作时,事务管理是非常关键的一环。事务确保了数据的完整性和一致性,尤其是在并发环境中。以下是对`jdbc+spring+mysql事务理解和分析`的详细说明: 1. **原子性...
#### 二、Spring事务管理的重要性 事务管理在企业级应用中至关重要,因为它确保了一组操作要么全部成功要么全部失败,从而保持数据的一致性。传统上,事务管理涉及大量的样板代码,比如开启连接、提交或回滚事务等...
在本文中,我们将深入探讨如何实现动态数据源切换,支持Spring声明式事务管理,并讨论多数据源回滚策略。以下是对这些知识点的详细说明: 1. **动态数据源切换**: - 通过AspectJ实现数据源的动态切换,可以设置在...
Spring 框架提供了丰富的事务管理功能,支持多种不同的配置方式来满足不同场景的需求。本文将详细介绍五种常见的 Spring 事务配置方法,并结合示例代码进行解析。 #### 二、每种配置方法概述 1. **每个 Bean 都有...
基于Spring Cloud+Vue的班级事务管理系统源码+详细项目说明.zip 系统架构 项目采用B/S架构,前后端通讯采用RESTful API,数据格式使用Json,认证Token格式采用JWT。 身份认证使用Spring Security Oauth2。 前端:...
2. AOP(面向切面编程):Spring.NET提供了AOP支持,允许开发者定义横切关注点(如日志、事务管理等),并将其与业务逻辑分离,提高了代码的可重用性和可维护性。 3. 数据访问支持:Spring.NET集成了多种数据访问...
spring 事务管理:对Spring的两种事务管理方式进行详细说明,并提供与hibernate的集成,及提供了一些实际开发技巧