声明式事物配置
<!-- 事务配置: 事务管理器 -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 事务配置: 事务通知 -->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="ins*"/>
<tx:method name="del*"/>
<tx:method name="upd*"/>
<tx:method name="batch*"/>
<tx:method name="find*" read-only="true" />
<tx:method name="get*" read-only="true" />
</tx:attributes>
</tx:advice>
<!-- Spring AOP config -->
<aop:config >
<!-- 切入点 -->
<aop:pointcut id="servicePointcut" expression="execution(* com.xx.xxx.service..*(..))" />
<aop:advisor pointcut-ref="servicePointcut" advice-ref="txAdvice"/>
</aop:config>
注意以下几点
1、事物配置文件(spring-db.xml)注意启用
<aop:aspectj-autoproxy proxy-target-class="true" expose-proxy="true"/>
2、事物配置文件(spring-db.xml)注意
expression="execution(* com.xx.xxx.service..*(..))"的正确书写
3、如果是采用spring mvc方式,注意springmvc-servlet.xml文件中<context:component-scan base-package="com.xx.xxx" />可能导致你的Service(此时没有产生事物相关代理类)提前加载,从而导致
事物配置不起作用,可以在springmvc-servlet.xml中import事物配置文件(或其余方式,如只扫描Controller)解决该问题,比如如下springmvc-servlet.xml配置:
<!-- 这里提前导入, 不然声明式事物不起作用 -->
<import resource="classpath*:spring/spring-db.xml"/>
<!-- mvc component -->
<context:component-scan base-package="com.xx.xxx" />
参考:
http://blog.csdn.net/downkang/article/details/21162983
分享到:
相关推荐
标题"spring编程式事物"主要关注的是编程式事务管理。这种方式允许开发者通过`PlatformTransactionManager`接口和`TransactionDefinition`接口来控制事务的生命周期。在Spring中,通常使用`TransactionTemplate`或者...
《Spring Boot多数据源(支持Spring声明式事务切换和回滚)》 Spring Boot多数据源技术是构建高效、灵活的多租户SaaS架构的关键。在本文中,我们将深入探讨如何实现动态数据源切换,支持Spring声明式事务管理,并讨论...
本文将详细介绍五种常见的Spring事务配置模式,并结合具体的配置示例进行说明。 #### 一、每个Bean都有一个代理 这种方式是最直接也是最简单的配置方法。它通过为每个需要事务支持的Bean创建一个代理来实现。这种...
在配置文件中,注释应详细说明每个元素的作用,例如在Spring的配置文件中,`<tx:annotation-driven>`的`transaction-manager`属性指定哪个事务管理器处理事务,`proxy-target-class="true"`表示使用CGLIB代理而不是...
除了上述介绍的第一种方法外,还有另外四种常见的Spring事务配置方法,它们分别是: 1. **第二种方法:使用AOP的声明式事务管理**:这种方式通过AOP(面向切面编程)来配置事务,可以避免为每个Bean都配置代理。...
Spring提供了多种事务管理方式,包括编程式事务管理和声明式事务管理,以适应不同场景的需求。 1. **事务的ACID特性** - 原子性(Atomicity):事务中的所有操作要么全部成功,要么全部失败,不允许部分完成。 - ...
综上所述,Spring 事务管理是基于数据库事务的抽象,提供了声明式和编程式的事务控制方式,以及灵活的事务传播机制,为开发者提供了强大且易用的事务管理工具。在实际项目中,根据业务场景合理配置事务隔离级别和...
通过本章节的学习,您应该能够掌握如何使用JdbcTemplate进行基本的数据库操作,以及如何在Spring中配置和使用声明式事务来管理复杂的业务流程。这些技能对于开发基于Spring框架的应用程序至关重要。
在SSH框架中,Spring提供了声明式事务管理。这允许开发者在XML配置文件中定义事务边界,而不是在代码中显式调用开始和结束事务。例如,可以在Spring的`applicationContext.xml`或`struts-config.xml`文件中配置事务...
Struts1、Hibernate和Spring是Java Web开发中的三大框架,它们各自负责应用程序的不同层面:Struts1主要用于控制层,提供MVC(Model-View-Controller)设计模式的实现;Hibernate是一个对象关系映射(ORM)工具,...
编程式事务管理需要在代码中显式调用begin、commit、rollback等方法,而声明式事务管理则通过在配置文件中定义事务边界,让Spring自动处理事务的开启、提交和回滚。例如,可以在Service层的方法上添加@Transactional...
2. **声明式事务管理**:通过配置(如XML或注解)来定义事务边界,例如在Spring框架中,可以使用@Transactional注解来声明事务。这种方式更加安全,也更符合面向切面编程(AOP)的思想。 3. **容器管理的事务(CMT...
在Spring Boot应用中,多数据源的配置与事务管理是一项重要的功能,特别是在大型分布式系统中,可能需要连接多个数据库以实现数据隔离或者扩展性。本文将深入探讨Spring Boot如何实现多数据源配置以及多数据源事务...
### SpringCloud最新2021年面试题及答案解析 #### 1、什么是Hystrix断路器?我们需要它吗? Hystrix是Netflix开源的一个容错库,它旨在通过添加延迟容忍性和容错性来控制分布式系统的交互。在Spring Cloud中,...
相比之下,声明式事务管理通过配置元数据(如注解或XML配置)来定义事务边界,简化了事务管理的复杂性,提高了代码的可读性和维护性。这种模型特别适合于那些事务逻辑相对固定且易于预测的场景。Spring框架广泛支持...
在Java Web开发中,SSM(Spring、SpringMVC、MyBatis)是一个常见的框架组合,用于构建高效、灵活的企业级应用。其中,事务管理是确保数据一致性与完整性的关键部分。`aspectjweaver.jar`是AspectJ库的一个组成部分...
在IT行业中,SSI框架通常指的是Struts、Spring和iBatis的集成,这是一套常见的Java Web开发技术栈。本教程将围绕这三个组件的整合,以及如何利用AspectJ实现切面事务处理进行深入讲解。 首先,让我们从Struts开始。...
### Java常见面试题详解 #### 一、JS与jQuery的区别 **JS(JavaScript)**是一种广泛使用的、基于原型的、解释型的脚本语言。它主要用于网页开发中的客户端交互,可以实现网页上的动态效果和逻辑控制。由于其轻量...
在本示例中,Spring通过声明式事务管理(如在XML配置文件中定义事务边界)来确保数据操作的一致性。此外,Spring还与Hibernate集成,简化了数据访问层的构建。它通过HibernateTemplate或SessionFactoryBean等工具类...