日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

springBoot service層事務控制的操作

瀏覽:32日期:2023-03-24 15:00:09

springBoot使用事物比較簡單,在Application啟動類s上添加@EnableTransactionManagement注解,然后在service層的方法上添加@Transactional注解

@Transactional屬性 屬性 類型 描述 value String 可選的限定描述符,指定使用的事務管理器 propagation enum: Propagation 可選的事務傳播行為設置 isolation enum: Isolation 可選的事務隔離級別設置 readOnly boolean 讀寫或只讀事務,默認讀寫 timeout int (in seconds granularity) 事務超時時間設置 rollbackFor Class對象數(shù)組,必須繼承自Throwable 導致事務回滾的異常類數(shù)組 rollbackForClassName 類名數(shù)組,必須繼承自Throwable 導致事務回滾的異常類名字數(shù)組 noRollbackFor Class對象數(shù)組,必須繼承自Throwable 不會導致事務回滾的異常類數(shù)組 noRollbackForClassName 類名數(shù)組,必須繼承自Throwable 不會導致事務回滾的異常類名字數(shù)組用法:

@Transactional 可以作用于接口、接口方法、類以及類方法上。當作用于類上時,該類的所有 public 方法將都具有該類型的事務屬性,同時,我們也可以在方法級別使用該標注來覆蓋類級別的定義。

雖然 @Transactional 注解可以作用于接口、接口方法、類以及類方法上,但是 Spring 建議不要在接口或者接口方法上使用該注解,因為這只有在使用基于接口的代理時它才會生效。

另外, @Transactional 注解應該只被應用到 public 方法上,這是由 Spring AOP 的本質(zhì)決定的。

如果你在 protected、private 或者默認可見性的方法上使用 @Transactional 注解,這將被忽略,也不會拋出任何異常。

默認情況下,只有來自外部的方法調(diào)用才會被AOP代理捕獲,也就是,類內(nèi)部方法調(diào)用本類內(nèi)部的其他方法并不會引起事務行為,即使被調(diào)用方法使用@Transactional注解進行修飾。

注解在方法上:

@Autowired private MyBatisDao dao; @Transactional @Override public void insert(Test test) { dao.insert(test); throw new RuntimeException('test');//拋出unchecked異常,觸發(fā)事物,回滾 }

@Transactional(noRollbackFor=RuntimeException.class) @Override public void insert(Test test) { dao.insert(test); //拋出unchecked異常,觸發(fā)事物,noRollbackFor=RuntimeException.class,不回滾 throw new RuntimeException('test'); }

@Transactional(propagation=Propagation.NOT_SUPPORTED) @Override public void insert(Test test) { //事物傳播行為是PROPAGATION_NOT_SUPPORTED,以非事務方式運行,不會存入數(shù)據(jù)庫 dao.insert(test); }

注解在類上:當作用于類上時,該類的所有 public 方法將都具有該類型的事務屬性

@Transactional public class MyBatisServiceImpl implements MyBatisService { @Autowired private MyBatisDao dao; @Override public void insert(Test test) { dao.insert(test); //拋出unchecked異常,觸發(fā)事物,回滾 throw new RuntimeException('test'); }

注意:有時候在開發(fā)時往往出現(xiàn)了添加注解后卻無法回滾

原因:默認spring事務只在發(fā)生未被捕獲的 RuntimeException 時才回滾。

spring aop 異常捕獲原理:被攔截的方法需顯式拋出異常,并不能經(jīng)任何處理,這樣aop代理才能捕獲到方法的異常,才能進行回滾,默認情況下aop只捕獲 RuntimeException 的異常,但可以通過配置來捕獲特定的異常并回滾

換句話說在service的方法中不使用try catch 或者在catch中最后加上throw new runtimeexcetpion(),這樣程序異常時才能被aop捕獲進而回滾。

解決方案:

1.在service層方法拋出RuntimeException異常(如在Catch中需要拋出自定義的異常則只需自定義異常繼承RuntimeException即可),并繼續(xù)捕獲和處理這個異常。

2.在service層方法的catch語句中增加:

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

語句,手動回滾,這樣上層就無需去處理異常。

補充:springboot多個service互相調(diào)用的事務處理

今天,想在一個service的方法A中,調(diào)用另一個service的方法B,方法A和方法B均存在數(shù)據(jù)庫插入操作,并且@Transaction注解也都加了,但是當B方法中拋出異常時,A中的插入語句還是能夠執(zhí)行成功。

注解配置如下:

@Transactional(isolation= Isolation.DEFAULT,propagation= Propagation.REQUIRED)

百思不得其解,再查找了相關資料后,問題還是出在@Transaction注解的配置上,需要配置異常回滾。

@Transactional(isolation= Isolation.DEFAULT,propagation= Propagation.REQUIRED,rollbackFor = Exception.class)

這樣,當B方法中拋出異常時,A中的操作也會進行回滾,事務就會起到控制作用。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
99国产精品久久久久久久成人热| 亚洲毛片视频| 中文在线日韩| 久久精品影视| 精品国产99| 国产精品视频一区二区三区| 黄色亚洲大片免费在线观看| 日本不卡免费高清视频在线| 97精品国产99久久久久久免费| 黄色亚洲精品| 欧美91福利在线观看| 久久亚洲精品中文字幕| 日韩一区二区三区免费视频| 亚洲经典在线| 欧美高清不卡| 水蜜桃久久夜色精品一区| 国产精品激情| 国产精品成人自拍| 久久国产尿小便嘘嘘| 91精品国产一区二区在线观看| 久久xxxx| 亚洲精品一区二区在线看| 在线一区视频观看| 久久久国产精品一区二区中文| 在线天堂资源www在线污| 激情久久99| 精品午夜视频| 精品国产aⅴ| 精品国产乱码久久久| 你懂的网址国产 欧美| 久久成人高清| 精品久久精品| 91精品韩国| 不卡一区2区| 偷拍精品精品一区二区三区| 神马午夜在线视频| 激情综合五月| 91日韩在线| 黄色aa久久| 99精品美女| japanese国产精品| 狠狠色狠狠色综合日日tαg| 日韩欧美一区二区三区在线视频 | 国产视频网站一区二区三区| 亚洲ab电影| 日韩一级欧洲| 伊人久久大香伊蕉在人线观看热v| 蜜桃av一区二区三区电影| 亚洲精品动态| 国产日韩欧美一区在线| 国产精品白浆| 国产粉嫩在线观看| 久久激情一区| 免费观看在线色综合| 日韩精品成人| 麻豆成人av在线| 国产伦久视频在线观看| 1024精品一区二区三区| 中文日韩在线| 91精品日本| 国产成人免费| 久久国产日本精品| 日本 国产 欧美色综合| 日韩不卡在线观看日韩不卡视频 | 精品久久97| 久久久久亚洲| 免费成人av在线播放| 国产精品一级| 日韩中文字幕高清在线观看| 亚洲激精日韩激精欧美精品| 久久亚洲影院| 麻豆国产精品一区二区三区| 福利一区二区| 视频一区二区欧美| 国产精品伦理久久久久久| 色综合视频一区二区三区日韩| 久久国产日本精品| 麻豆国产91在线播放| 亚洲麻豆一区| 欧美精品羞羞答答| 成人国产精选| 国产精久久一区二区| 免播放器亚洲一区| 九九色在线视频| 国产精品久久国产愉拍| 免费精品视频| 99久久亚洲精品蜜臀| 久久99国产精品视频| 亚洲天堂日韩在线| 91精品二区| 亚洲不卡系列| 精品91福利视频| 久久精品av麻豆的观看方式| 亚洲欧美日本国产专区一区| av高清一区| 国产一区一一区高清不卡| 日韩av一区二| 亚洲欧美在线综合| 婷婷激情综合| 亚洲高清激情| 欧美日中文字幕| 日韩欧美在线中字| 国产suv精品一区二区四区视频| 国产日产精品_国产精品毛片| 视频国产精品| 免费观看久久久4p| av成人国产| 欧美在线亚洲| re久久精品视频| 国产一区日韩欧美| 久久国产主播| 久久久久国产精品一区二区| 高清av不卡| 四虎成人av| sm捆绑调教国产免费网站在线观看| 久久99精品久久久野外观看| 国产区精品区| 青青国产精品| 亚洲a成人v| 日韩精品免费视频一区二区三区| 久久亚洲风情| 亚洲一区二区三区无吗| 免费在线视频一区| 亚洲资源在线| 日本aⅴ亚洲精品中文乱码| 日韩欧美三区| 日韩精品亚洲专区在线观看| 日韩综合一区二区| 欧美在线精品一区| 国产午夜久久av| 乱一区二区av| 色在线中文字幕| 在线视频观看日韩| 欧美成人综合| 美女网站久久| 日本不卡一二三区黄网| 欧美日韩1区| 麻豆精品久久久| 国产精品原创| 欧美亚洲国产一区| 视频一区欧美日韩| 日韩高清一区在线| 麻豆精品在线| 日韩精品一区二区三区免费观影 | 一区在线免费| 在线国产一区| 在线观看亚洲精品福利片| 亚洲精品一级二级三级| 日韩高清一级| 国产精品porn| 樱桃视频成人在线观看| 欧美色图国产精品| 黄色欧美日韩| 日韩高清不卡在线| 欧美极品中文字幕| 欧美天堂视频| 视频在线观看一区| 人人爱人人干婷婷丁香亚洲| 精品久久亚洲| 久久美女性网| 三上悠亚国产精品一区二区三区| 亚洲成人日韩| 日韩精品久久久久久| 欧美a级一区二区| 久久中文字幕av| 亚洲天堂av资源在线观看| 国产探花在线精品| 精品丝袜在线| 亚洲va久久| 久久久久久夜| 午夜在线视频一区二区区别| 国产亚洲高清在线观看| 日韩在线高清| 四虎在线精品| 高清日韩欧美| 99re国产精品| 久久av免费| 国产亚洲亚洲| 精品资源在线| 水野朝阳av一区二区三区| 欧美黑人巨大videos精品| 99视频精品视频高清免费| 在线看片日韩| 91一区二区| 日韩一区二区三区高清在线观看| 成人午夜亚洲| 亚洲精选av| 欧洲一级精品| 国产日韩欧美一区二区三区 | 99热精品在线| 欧美黑人巨大videos精品| 午夜精品婷婷| 国产精品一区二区99| 99国产精品| 精品国产美女a久久9999| 久久最新视频| 久久毛片亚洲| 欧美日韩亚洲一区二区三区在线| 亚洲午夜黄色| 欧美国产中文高清|