`
jinnianshilongnian
  • 浏览: 21508133 次
  • 性别: Icon_minigender_1
博客专栏
5c8dac6a-21dc-3466-8abb-057664ab39c7
跟我学spring3
浏览量:2419366
D659df3e-4ad7-3b12-8b9a-1e94abd75ac3
Spring杂谈
浏览量:3009340
43989fe4-8b6b-3109-aaec-379d27dd4090
跟开涛学SpringMVC...
浏览量:5639911
1df97887-a9e1-3328-b6da-091f51f886a1
Servlet3.1规范翻...
浏览量:260066
4f347843-a078-36c1-977f-797c7fc123fc
springmvc杂谈
浏览量:1597568
22722232-95c1-34f2-b8e1-d059493d3d98
hibernate杂谈
浏览量:250293
45b32b6f-7468-3077-be40-00a5853c9a48
跟我学Shiro
浏览量:5859635
Group-logo
跟我学Nginx+Lua开...
浏览量:702520
5041f67a-12b2-30ba-814d-b55f466529d5
亿级流量网站架构核心技术
浏览量:785431
社区版块
存档分类
最新评论

Spring事务不起作用 问题汇总

 
阅读更多

总有很多朋友询问spring事务不起作用怎么回事,这里我汇总下,欢迎补充:

 

1、首先使用如下代码 确认你的bean 是代理对象吗?

AopUtils.isAopProxy()

AopUtils.isCglibProxy() //cglib

AopUtils.isJdkDynamicProxy() //jdk动态代理

 

如果不是 那么就是切入点配置出错了 或者如果你使用了springmvc,可能是context:component-scan重复扫描引起的:

http://jinnianshilongnian.iteye.com/blog/1423971

http://jinnianshilongnian.iteye.com/blog/1762632

http://jinnianshilongnian.iteye.com/blog/1857189

 

2、如果是aop代理,那么说明代理成功,那么可能是如使用mysql且引擎是MyISAM造成的(因为不支持事务),改成InnoDB即可。

 

3、 如果你是基于类的代理,而非接口,如果想代理父类里的,可以用

execution(* com.sishuok.es..service..*+.*(..))  

//+表示子类的也扫描(参考http://jinnianshilongnian.iteye.com/blog/1420691

 

欢迎补充。

8
2
分享到:
评论
8 楼 alreadyfor 2016-07-21  
System.out.println(AopUtils.isAopProxy(userService));
    System.out.println(AopUtils.isCglibProxy(userService));
    System.out.println(AopUtils.isJdkDynamicProxy(userService));返回true,true,false 但是事务还是没起作用
7 楼 sky_xin 2016-07-01  
我在代码中加入了这三个方法:
AopUtils.isAopProxy()
AopUtils.isCglibProxy() //cglib
AopUtils.isJdkDynamicProxy()
但是仍然都是返回false,不过我的事务起作用了,原因就是你说的覆盖了原来扫描的Service和Dao,我的修改是这样的
原来的代码:
<context:component-scan base-package="com.linjia.web"  >
</context:component-scan>
改正后:
<context:component-scan base-package="com.linjia.web.controller"  >
</context:component-scan>

这里只需要扫描controller就行了,不要整个都扫描,否则会覆盖,从而引起事务失效
6 楼 mmhotsky 2015-10-28  
单元测试时,如果不继承AbstractTransactionalJUnit4SpringContextTests,那么需要在@TestExecutionListeners中增加TransactionalTestExecutionListener.class
5 楼 flywangfei 2015-04-01  
补充一种情况,开启事务的时候和执行dao的数据源不是一个,也会引起问题
4 楼 jiang79603445 2013-08-26  
[img][/img]
3 楼 wgy_superpower 2013-07-28  
jinnianshilongnian 写道
wgy_superpower 写道
spring 默认情况下使用 JDK代理,有没有什么办法 让它 强制使用 cglib代理呢,
还是说 spring 会根据代理类型(接口还是类)自己选择使用JDK代理还是CGLIB代理呢?

比如xml风格的 <aop:config proxy-target-class="true">即可强制cglib代理



谢谢解答,我也是偶然一问,没想到呀。。。呵呵,必须要赞扬一下博主的这种精神。。
2 楼 jinnianshilongnian 2013-07-26  
wgy_superpower 写道
spring 默认情况下使用 JDK代理,有没有什么办法 让它 强制使用 cglib代理呢,
还是说 spring 会根据代理类型(接口还是类)自己选择使用JDK代理还是CGLIB代理呢?

比如xml风格的 <aop:config proxy-target-class="true">即可强制cglib代理
1 楼 wgy_superpower 2013-07-26  
spring 默认情况下使用 JDK代理,有没有什么办法 让它 强制使用 cglib代理呢,
还是说 spring 会根据代理类型(接口还是类)自己选择使用JDK代理还是CGLIB代理呢?

相关推荐

    Spring事务管理失效原因汇总

    标题“Spring事务管理失效原因汇总”指出了本文的核心内容是分析在使用Spring框架进行事务管理时可能遇到的问题及其原因。描述部分进一步说明了事务失效的后果往往不明显,容易在测试环节被忽略,但在生产环境中出现...

    Spring中事务的传播属性详解

    ### Spring中事务的传播属性详解 #### 一、引言 在使用Spring框架进行应用程序开发时,事务管理是一项非常重要的特性。Spring提供了两种事务管理方式:编程式事务管理和声明式事务管理。其中,声明式事务管理因其...

    关于SpringMyBatis纯注解事务不能提交的问题分析与解决

    本文主要针对在Spring + MyBatis环境下,或使用Spring JDBC时,Oracle事务不能正常提交的问题进行了深入分析,并提出了相应的解决方案。根据提供的部分内容,我们发现该问题与不同的数据源配置有关。具体来说,当...

    Spring自定义切面事务问题

    ### Spring自定义切面事务问题 #### 背景与挑战 在开发基于Spring框架的应用程序时,我们经常需要利用AOP(面向切面编程)来实现横切关注点(如日志记录、安全控制、事务管理等)的模块化处理。其中,事务管理是...

    spring事务案例分析.zip

    在IT行业中,Spring框架...总结,Spring事务管理是其核心功能之一,它简化了事务处理的复杂性,使开发者能够专注于业务逻辑。通过学习和实践案例,我们可以更好地掌握Spring事务的使用,提高应用程序的稳定性和可靠性。

    spring事务操作试验

    总结来说,"spring事务操作试验"涵盖了Spring框架中的事务管理基础,包括声明式和编程式事务,以及它们在JDBC操作中的应用。通过实验,读者可以更好地理解事务的生命周期、隔离级别和回滚规则,这些都是构建健壮、...

    Spring 事务简单完整例子

    总结来说,Spring的事务管理提供了强大且灵活的工具,使得开发者能够在不关心底层实现的情况下,轻松地管理数据库事务。无论是编程式还是声明式,都能有效地保证数据的一致性和完整性,这也是Spring在企业级应用中...

    Spring事务传播Demo.zip

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

    SPRING事务机制DEMO

    Spring事务机制是Java...总结来说,Spring事务机制和AOP是Java开发中的重要工具,它们帮助我们构建可维护、可扩展的系统。通过学习和实践这个DEMO,你将更好地理解如何利用Spring的这些功能来提升应用的质量和效率。

    spring 事务基于注解模式

    Spring事务管理分为编程式和声明式两种。编程式事务管理通过编程的方式(如使用`TransactionTemplate`或直接调用`PlatformTransactionManager`)来控制事务的开始、提交、回滚等操作。而声明式事务管理则是在配置...

    Spring事务详解

    Spring事务还支持多种隔离级别,包括READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE,不同的隔离级别可以防止脏读、不可重复读、幻读等并发问题,但也会对性能产生影响,因此需要根据实际需求...

    Spring事务与Java事务比较

    总结来说,Spring 框架的事务管理与 Java 原生的事务管理相比,具有更高的抽象层次和更好的可配置性,使得事务管理更加简单和高效。通过 Spring 的 IOC 容器和 AOP 机制,开发者可以更专注于业务逻辑的实现,而将...

    Hibernate缓存与spring事务详解

    **标题:“Hibernate缓存与Spring事务详解”** 在IT领域,尤其是Java开发中,Hibernate作为一款流行的ORM(对象关系映射)框架,极大地简化了数据库操作。而Spring框架则以其全面的功能,包括依赖注入、AOP(面向切...

    Spring的事务管理小案例

    在本文中,我们将深入探讨Spring框架中的事务管理。Spring是一个广泛应用的Java企业级应用开发框架,它提供...如果你想要深入了解,可以参考提供的博客链接或其他相关资料,进一步学习Spring事务管理的细节和最佳实践。

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

    Spring事务管理是Spring框架的核心特性之一,主要用于处理应用程序中的数据一致性问题。在多线程、分布式系统中,事务管理显得尤为重要。本节将详细介绍Spring如何通过XML配置和注解方式来实现事务管理。 首先,...

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

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

    Spring事务优缺点及使用详解.docx

    Spring事务管理提供了统一的事务处理模型,使得开发者无需关注具体数据库访问技术的事务细节,简化了事务控制代码,提高了代码的可读性和可维护性。无论是使用注解还是AOP配置,都能有效地管理和协调事务,确保应用...

    spring 事务传播

    在深入探讨Spring框架中的事务传播属性之前,我们先来简要回顾一下Spring事务的基础概念。Spring框架提供了强大的事务管理功能,允许开发者通过声明式的方式管理业务逻辑中的事务边界。Spring的事务管理主要依赖于`...

Global site tag (gtag.js) - Google Analytics