spring mvc 事物失效

心已入冬 提交于 2019-12-05 07:22:52

 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

<context:component-scan base-package="com"

    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> 

</context:component-scan>

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!