簡潔明瞭的概述
spring 事務
(1)程式設計式事務管理
(2)宣告式事務管理
由於使用宣告式事務比較簡單,它是在spring aop的基礎上實現,本質就是使用@transaction註解,放在方法,類等上,放在類上就說明此類下的所有public方法都開啟事務,放在方法上就是方法前開啟事務,方法結束時來判斷事務是否提交獲取回滾。
但是要注意的就是事務是否回滾條件:
1、對於mysql的myisamy引擎,是不支援事務的。
2、預設spring事務只在發生未**獲的 runtimeexception 時才回滾。換句話說在service的方法中不使用try catch 或者在catch中最後加上throw new runtimeexcetpion(),這樣程式異常時才能被aop捕獲進而回滾。
3、spring的aop即宣告式事務管理預設是針對unchecked exception回滾。也就是預設對runtimeexception()異常或是其子類進行事務回滾;checked異常,即exception可try{}捕獲的不會回滾,因此對於我們自定義異常,通過rollbackfor進行設定,後續會單獨講
@transactional(rollbackforclassname=)
或者@transactional(rollbackfor=)
二、你遇到異常不想回滾事務的時候,同樣的你也可指定不回滾的規則,下面的乙個例子告訴你,即使遇到未處理的instrumentnotfoundexception
異常時,spring framework 的事務框架同樣會提交事務,而不回滾。
@transactional(norollbackforclassname=)
或者@transactional(norollbackfor=)
spring事務控制注意
pring預設情況下會對執行期例外 runtimeexception 進行事務回滾。這個例外是unchecked 如果遇到checked意外就不回滾。如何改變預設規則 1 讓checked例外也回滾 在整個方法前加上 transactional rollbackfor exception.class...
spring事務管理的一些注意點
總結一些自己最近在使用spring事務管理時碰到的一些注意點 目標類的介面和實現 示例 public inte ce aservice service public class aserviceimpl implements aservice transactional rollbackfor pu...
Spring配置Scope屬性注意點
spring的配置bean元素時,其scope屬性取值有如下幾個 1.singleton 單例模式,即該bean對應的類只有乙個例項 在 spring 中是scope 作用範圍 引數的預設值 2.prototype 表示每次從容器中取出bean時,都會生成乙個新例項 相當於new出來乙個物件 3.r...