spring mvc 事物失效的原因:
各位侠士都知道,spring事物管理是一个很高大上的东西。
你需要首先了解的知识:
1 msyql 默认的MyISAM引擎是一种非事务性的引擎,提供高速存储和检索,以及全文搜索能力,适合数据仓库等查询频繁的应用。
InnoDB则是一种支持事务的引擎。所以的数据存储在一个或者多个数据文件中,支持类似于Oracle的锁机制。
所以当你的数据库为默认的存储引擎 MyISAM ,那么你的事物当然不起作用,它不支持事物嘛
2 Spring的事务管理对何种异常进行回滚
Spring的事务管理默认只对出现运行期异常(java.lang.RuntimeException及其子类)进行回滚。
如果一个方法抛出Exception或者Checked异常,Spring事务管理默认不进行回滚。
这就要求我们在自定义异常的时候,让自定义的异常继承自RuntimeException,这样抛出的时候才会被Spring默认的事务处理准确处理。
3 入口函数必须是public,否则事务不起作用。这一点由Spring的AOP特性决定的。
4、如果你使用了springmvc,可能是context:component-scan重复扫描引起的:
spring-mvc 只扫描controller
在主容器中(applicationContext.xml),将Controller的注解排除掉
1 2 3 |
|
来源:oschina
链接:https://my.oschina.net/u/2361669/blog/775305