標籤:方式 載入 asp ola jvm 情況 support tty red
今天項目中需要使用到事務,所以在這裡將SpringBoot的事務實現方式學習一下
SpringBoot中使用事務會使用到@Transactional這個註解來實現
先來對Transactional註解有個大致瞭解
1.其上註解
@Target({ElementType.METHOD, ElementType.TYPE})//METHOD:用於描述方法,TYPE:用於描述類、介面(包括註解類型) 或enum聲明@Retention(RetentionPolicy.RUNTIME)//註解不僅被儲存到class檔案中,jvm載入class檔案之後,仍然存在@Inherited//闡述了某個被標註的類型是被繼承的@Documented//表明這個註解應該被 javadoc工具記錄
2.屬性
2.1 rollbackFor(這就是我今天使用到的屬性)
指定哪些異常需要進行交易回復,這裡可以設定異常數組,通常為RuntimeException.class、Exception.class
2.2 value和2.3 transactionManager(因為使用了AliasFor註解,value和transactionManager互為別名)
這兩個放在一起講,如果我們沒有指定,預設為上下文中聲明的名稱為“transactionManager”,pringboot會自動設定一個 DataSourceTransactionManager
2.4 propagation 預設為Propagation.REQUIRED
用於設定事務的傳播行為,業務方法需要在一個事務中運行,如果方法運行時,已處在一個事務中,那麼就加入該事務,否則自己建立一個新的事務.這是spring預設的傳播行為
2.5 isolation 預設為 Isolation.DEFAULT
用於設定底層資料庫的交易隔離等級,交易隔離等級用於處理多事務並發的情況,通常使用資料庫的預設隔離等級即可,基本不需要進行設定
2.6 timeout 預設為-1,表示永不逾時
用於設定事務的逾時秒數
2.7 readOnly 預設為false
設定當前事務是否為唯讀事務
2.8 rollbackForClassName (這個和rollbackFor最大的區別就是一個是指定異常類,一個是指定異常類名)
2.9 noRollbackFor(這個應該就是忽略哪些異常)
2.10 noRollbackForClassName(這個我覺得不需要我詳細說明了)
3.實際使用(這算是手動復原使用)
1.首先在我們需要使用事務的Service層的方法上添加@Transactional註解
2.rollbackFor配置我們需要捕獲的哪些異常來進行交易回復
3.其他參數按照自己實際需求來添加
4.方法中捕獲這個異常,然後調用
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
注意:
[email protected]註解必須應用到public方法上才有效
SpringBoot中添加事務