spring mvc 事物失效的緣由:java
各位俠士都知道,spring事物管理是一個很高大上的東西。spring
你須要首先了解的知識:數據庫
1 msyql 默認的MyISAM引擎是一種非事務性的引擎,提供高速存儲和檢索,以及全文搜索能力,適合數據倉庫等查詢頻繁的應用。express
InnoDB則是一種支持事務的引擎。因此的數據存儲在一個或者多個數據文件中,支持相似於Oracle的鎖機制。spring-mvc
因此當你的數據庫爲默認的存儲引擎 MyISAM ,那麼你的事物固然不起做用,它不支持事物嘛mvc
2 Spring的事務管理對何種異常進行回滾app
Spring的事務管理默認只對出現運行期異常(java.lang.RuntimeException及其子類)進行回滾。
若是一個方法拋出Exception或者Checked異常,Spring事務管理默認不進行回滾。函數
這就要求咱們在自定義異常的時候,讓自定義的異常繼承自RuntimeException,這樣拋出的時候纔會被Spring默認的事務處理準確處理。spa
3 入口函數必須是public,不然事務不起做用。這一點由Spring的AOP特性決定的。code
4、若是你使用了springmvc,多是context:component-scan重複掃描引發的:
spring-mvc 只掃描controller
在主容器中(applicationContext.xml),將Controller的註解排除掉
1 2 3 |
|