`

配置springMVC时事务失效的解决方案

 
阅读更多

参考:http://jinnianshilongnian.iteye.com/blog/1850432

主要看我评论的内容,我是已经正常解决了的。

 

我的评论如下:

我在代码中加入了这三个方法:
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就行了,不要整个都扫描,否则会覆盖,从而引起事务失效

 

 

 

原内容如下:

总有很多朋友询问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

 

欢迎补充。

分享到:
评论

相关推荐

    16.spring与springmvc常见面试题.docx

    答:Spring 框架是一个一站式(full-stack 全栈式)框架,提供了从表现层-springMVC 到业务层-spring 再到持久层-springdata 的一套完整的解决方案。我们在项目中可以只使用 Spring 一个框架,它就可以提供表现层的 ...

    RedisCluster集群(Spring访问Redis)

    Redis Cluster是Redis官方提供的分布式解决方案,它将数据分片到多个节点上,每个节点存储一部分数据,从而实现了水平扩展。Redis Cluster采用了无中心的设计,所有节点彼此通信,共同维护整个集群的状态。 ### 2. ...

    SpringMVC精品资源--涵盖大部分Java进阶需要掌握的知识,包括【微服务】【中间件】【缓存】【数据库优化】【.zip

    在Spring MVC中,Spring Cache抽象可以方便地集成各种缓存解决方案。 4. **数据库优化**: 数据库优化涉及到SQL查询优化、索引设计、事务管理、读写分离、分库分表等。理解如何编写高效的SQL语句,避免全表扫描,...

    spring杂谈 作者zhang KaiTao

    作者讨论了SpringMVC与Hibernate的集成,以及在这个过程中可能遇到的问题和解决方案。他还深入解析了AspectJ的切入点表达式,这是Spring AOP中用于定义关注点的关键语法。 Spring对事务管理的支持随着版本的升级而...

    Spring-Reference_zh_CN(Spring中文参考手册)

    9.9. 公共问题的解决方案 9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行数据访问 11.1. 简介 ...

    2024java面试宝典

    其数据结构类型、使用场景、实现分布式锁的机制、单线程模型的好处、多线程并发控制、key的删除策略、缓存一致性问题、集群环境下的一致性哈希和缓存问题(如击穿、穿透、雪崩)的解决方案是面试官常问内容。...

    跳槽涨薪涨薪必备精选面试题.pdf

    跨域请求可能导致安全性问题,解决方案包括CORS、JSONP、代理服务器等。 Spring中的Bean生命周期包括实例化、初始化、属性注入、后处理、销毁等步骤。Bean默认不是线程安全的,需要手动管理。 `ApplicationContext...

    (2024)跳槽涨薪必备精选面试题.pdf

    - 解决方案:CORS 或 JSONP。 3. **Spring中的Bean创建的生命周期有哪些步骤** - Bean 定义的初始化。 - Bean 实例的创建。 - 属性注入。 - 初始化方法调用。 - 销毁方法调用。 4. **Spring中Bean是否线程...

    1000道 互联网大厂面试题.pdf

    7. **字段映射**:实体类属性与表字段不一致时,可以使用`@Results`注解或者XML配置中的`resultMap`进行映射。 8. **模糊查询**:可以使用`like`语句,注意对特殊字符需要转义处理。 9. **Dao接口原理**:MyBatis...

    java面试知识

    - **Hibernate**:全ORM解决方案,自动管理对象的生命周期。 - **MyBatis (原Ibatis)**:半ORM框架,提供动态SQL支持。 - **JDBC**:直接与数据库交互,灵活性高但编码繁琐。 ##### Hibernate的运行原理 - **...

Global site tag (gtag.js) - Google Analytics