`

Spring声明式事物配置不起作用的常见原因

阅读更多
声明式事物配置
   <!-- 事务配置: 事务管理器 -->
<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编程式事物

    标题"spring编程式事物"主要关注的是编程式事务管理。这种方式允许开发者通过`PlatformTransactionManager`接口和`TransactionDefinition`接口来控制事务的生命周期。在Spring中,通常使用`TransactionTemplate`或者...

    Spring Boot多数据源(支持Spring声明式事务切换和回滚).pdf

    《Spring Boot多数据源(支持Spring声明式事务切换和回滚)》 Spring Boot多数据源技术是构建高效、灵活的多租户SaaS架构的关键。在本文中,我们将深入探讨如何实现动态数据源切换,支持Spring声明式事务管理,并讨论...

    Spring事物配置的五种模式

    本文将详细介绍五种常见的Spring事务配置模式,并结合具体的配置示例进行说明。 #### 一、每个Bean都有一个代理 这种方式是最直接也是最简单的配置方法。它通过为每个需要事务支持的Bean创建一个代理来实现。这种...

    在SSH中使用事物包括SSH的搭建和配置;事物的配置;注释详细

    在配置文件中,注释应详细说明每个元素的作用,例如在Spring的配置文件中,`&lt;tx:annotation-driven&gt;`的`transaction-manager`属性指定哪个事务管理器处理事务,`proxy-target-class="true"`表示使用CGLIB代理而不是...

    spring事物的五种配制方法

    除了上述介绍的第一种方法外,还有另外四种常见的Spring事务配置方法,它们分别是: 1. **第二种方法:使用AOP的声明式事务管理**:这种方式通过AOP(面向切面编程)来配置事务,可以避免为每个Bean都配置代理。...

    spring 事物总结

    Spring提供了多种事务管理方式,包括编程式事务管理和声明式事务管理,以适应不同场景的需求。 1. **事务的ACID特性** - 原子性(Atomicity):事务中的所有操作要么全部成功,要么全部失败,不允许部分完成。 - ...

    spring 事物底层原理分析1

    综上所述,Spring 事务管理是基于数据库事务的抽象,提供了声明式和编程式的事务控制方式,以及灵活的事务传播机制,为开发者提供了强大且易用的事务管理工具。在实际项目中,根据业务场景合理配置事务隔离级别和...

    4.Spring中的JdbcTemplate,Spring中的的事务,

    通过本章节的学习,您应该能够掌握如何使用JdbcTemplate进行基本的数据库操作,以及如何在Spring中配置和使用声明式事务来管理复杂的业务流程。这些技能对于开发基于Spring框架的应用程序至关重要。

    在SSH中使用事物包括SSH的搭建和配置;事务的配置;注释详细。(完整项目)

    在SSH框架中,Spring提供了声明式事务管理。这允许开发者在XML配置文件中定义事务边界,而不是在代码中显式调用开始和结束事务。例如,可以在Spring的`applicationContext.xml`或`struts-config.xml`文件中配置事务...

    struts1,hibernate,spring整合demo1

    Struts1、Hibernate和Spring是Java Web开发中的三大框架,它们各自负责应用程序的不同层面:Struts1主要用于控制层,提供MVC(Model-View-Controller)设计模式的实现;Hibernate是一个对象关系映射(ORM)工具,...

    SSH的配置、事务管理和Log4j的配置

    编程式事务管理需要在代码中显式调用begin、commit、rollback等方法,而声明式事务管理则通过在配置文件中定义事务边界,让Spring自动处理事务的开启、提交和回滚。例如,可以在Service层的方法上添加@Transactional...

    (事物学习笔记二) 对Java事物的理解

    2. **声明式事务管理**:通过配置(如XML或注解)来定义事务边界,例如在Spring框架中,可以使用@Transactional注解来声明事务。这种方式更加安全,也更符合面向切面编程(AOP)的思想。 3. **容器管理的事务(CMT...

    SpringBoot多数据源以及多数据源事物

    在Spring Boot应用中,多数据源的配置与事务管理是一项重要的功能,特别是在大型分布式系统中,可能需要连接多个数据库以实现数据隔离或者扩展性。本文将深入探讨Spring Boot如何实现多数据源配置以及多数据源事务...

    SpringCloud最新2021年面试题附答案解析,大汇总.md

    ### SpringCloud最新2021年面试题及答案解析 #### 1、什么是Hystrix断路器?我们需要它吗? Hystrix是Netflix开源的一个容错库,它旨在通过添加延迟容忍性和容错性来控制分布式系统的交互。在Spring Cloud中,...

    Java事物设计策略

    相比之下,声明式事务管理通过配置元数据(如注解或XML配置)来定义事务边界,简化了事务管理的复杂性,提高了代码的可读性和维护性。这种模型特别适合于那些事务逻辑相对固定且易于预测的场景。Spring框架广泛支持...

    SSM中事务管理所需的jar包-aspectjweaver

    在Java Web开发中,SSM(Spring、SpringMVC、MyBatis)是一个常见的框架组合,用于构建高效、灵活的企业级应用。其中,事务管理是确保数据一致性与完整性的关键部分。`aspectjweaver.jar`是AspectJ库的一个组成部分...

    SSI框架搭建实例教程(struts spring ibatis整合 附切面事物处理)

    在IT行业中,SSI框架通常指的是Struts、Spring和iBatis的集成,这是一套常见的Java Web开发技术栈。本教程将围绕这三个组件的整合,以及如何利用AspectJ实现切面事务处理进行深入讲解。 首先,让我们从Struts开始。...

    Java常见面试题(内含答案)

    ### Java常见面试题详解 #### 一、JS与jQuery的区别 **JS(JavaScript)**是一种广泛使用的、基于原型的、解释型的脚本语言。它主要用于网页开发中的客户端交互,可以实现网页上的动态效果和逻辑控制。由于其轻量...

    SSH示例代码(带事物和Blob操作的)

    在本示例中,Spring通过声明式事务管理(如在XML配置文件中定义事务边界)来确保数据操作的一致性。此外,Spring还与Hibernate集成,简化了数据访问层的构建。它通过HibernateTemplate或SessionFactoryBean等工具类...

Global site tag (gtag.js) - Google Analytics