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

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

springBoot service層事務(wù)控制的操作

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

springBoot使用事物比較簡(jiǎn)單,在Application啟動(dòng)類s上添加@EnableTransactionManagement注解,然后在service層的方法上添加@Transactional注解

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

@Transactional 可以作用于接口、接口方法、類以及類方法上。當(dāng)作用于類上時(shí),該類的所有 public 方法將都具有該類型的事務(wù)屬性,同時(shí),我們也可以在方法級(jí)別使用該標(biāo)注來覆蓋類級(jí)別的定義。

雖然 @Transactional 注解可以作用于接口、接口方法、類以及類方法上,但是 Spring 建議不要在接口或者接口方法上使用該注解,因?yàn)檫@只有在使用基于接口的代理時(shí)它才會(huì)生效。

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

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

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

注解在方法上:

@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,以非事務(wù)方式運(yùn)行,不會(huì)存入數(shù)據(jù)庫 dao.insert(test); }

注解在類上:當(dāng)作用于類上時(shí),該類的所有 public 方法將都具有該類型的事務(wù)屬性

@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'); }

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

原因:默認(rèn)spring事務(wù)只在發(fā)生未被捕獲的 RuntimeException 時(shí)才回滾。

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

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

解決方案:

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

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

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

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

補(bǔ)充:springboot多個(gè)service互相調(diào)用的事務(wù)處理

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

注解配置如下:

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

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

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

這樣,當(dāng)B方法中拋出異常時(shí),A中的操作也會(huì)進(jìn)行回滾,事務(wù)就會(huì)起到控制作用。

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

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品sm| а√天堂8资源中文在线| 黑森林国产精品av| 久久免费影院| 欧美xxxx性| 国产精品夜夜夜| 国产日韩视频| 亚洲三级国产| 在线看片日韩| 日本中文字幕视频一区| 日本v片在线高清不卡在线观看| 日韩精品一卡二卡三卡四卡无卡| 免费国产自线拍一欧美视频| 亚洲中午字幕| 一区二区91| 亚洲人亚洲人色久| 一区二区三区网站| 日本在线一区二区三区| 日韩国产一二三区| 日本a级不卡| 国产精品一国产精品| 精品伊人久久久| 成人午夜毛片| 九九久久国产| 久久久人人人| 西西人体一区二区| 亚洲一区有码| 91精品麻豆| 精品久久精品| 99精品在线| 免费看日韩精品| 久久黄色影视| 成人在线免费观看91| 色婷婷狠狠五月综合天色拍| 91成人精品视频| 在线观看一区| 麻豆国产精品| 日韩欧美一区二区三区在线视频 | 一区二区三区四区日韩| 91久久精品无嫩草影院| 精品久久99| 九一成人免费视频| 亚洲人成网站在线在线观看| 国产欧美一区二区精品久久久 | 亚洲精品99| 蜜桃视频第一区免费观看| 欧美亚洲一级| 免费在线小视频| 亚洲一区二区小说| 久久精品资源| 精品欧美久久| 日韩国产在线不卡视频| а√在线中文在线新版| 亚洲综合精品| 国产精品日本一区二区不卡视频 | 精品中文字幕一区二区三区av| 丝袜美腿成人在线| 久久在线91| 狠狠色狠狠色综合日日tαg| 亚洲97av| 98精品视频| 香蕉视频成人在线观看| 你懂的亚洲视频| 99riav1国产精品视频| 青青草国产精品亚洲专区无| 日韩精品中文字幕第1页| 亚洲精品在线二区| 日韩成人综合| 一区二区三区网站| 色偷偷色偷偷色偷偷在线视频| 蜜桃91丨九色丨蝌蚪91桃色| 精品五月天堂| 蜜桃视频一区二区三区| 日韩电影二区| 欧美一区二区三区久久精品| 欧美亚洲激情| 欧美黄色一区二区| 亚洲免费中文| 日韩中文在线电影| 欧美三级第一页| 五月综合激情| 国产一区2区| 日本成人在线网站| 亚洲高清不卡| 麻豆成人在线观看| 99国产精品| 91av亚洲| 国产精品任我爽爆在线播放| 久久福利精品| 91精品xxx在线观看| 日本中文字幕一区二区| 免费毛片在线不卡| 国产不卡人人| 国产精品白丝久久av网站| 美女久久网站| 欧美69视频| 麻豆mv在线观看| 国产美女久久| 国产精品日韩| 香蕉视频亚洲一级| 精品国产午夜肉伦伦影院 | 蜜桃伊人久久| 日韩视频二区| 亚洲黄色影院| 亚洲精品va| 欧美不卡在线| 国产精品99一区二区| 日韩电影免费在线观看| 福利一区二区三区视频在线观看| 国产免费av国片精品草莓男男| 日本欧美一区二区在线观看| 日韩在线观看一区二区| 黄色成人在线网址| 国内精品福利| 日韩视频久久| 最新亚洲一区| 香蕉成人久久| 久久精品国产68国产精品亚洲| 国产一区 二区| 日韩欧美精品一区二区综合视频| 国产精品7m凸凹视频分类| 日韩欧美一区二区三区免费看| 欧美日韩调教| 亚洲另类av| 日韩视频在线一区二区三区| 免费欧美一区| 久久久久久黄| 日本午夜精品久久久| 在线视频免费在线观看一区二区| 美女久久久久久| 精品99久久| 国产精品99精品一区二区三区∴| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久视频精品| 日韩成人综合| a日韩av网址| 激情久久五月| 久久蜜桃资源一区二区老牛| 成人影视亚洲图片在线| 国产精品一在线观看| 中文字幕av一区二区三区四区| 亚洲精品99| 蜜桃成人av| 成人羞羞视频播放网站| 福利在线一区| 精品国产免费人成网站| 麻豆久久久久久久| 国产精品多人| 欧美亚洲专区| 欧美亚洲tv| 欧美亚洲网站| 国产精品嫩模av在线| 国产欧美三级| 亚洲天堂av资源在线观看| 日本免费在线视频不卡一不卡二| 亚洲一级大片| 亚洲2区在线| 一级成人国产| 亚洲精品婷婷| 亚洲一区欧美激情| 欧美日韩99| 美女高潮久久久| 精品一区不卡| 国产美女高潮在线观看| 久久精品青草| 亚洲欧洲日本mm| 亚洲综合不卡| 日本不卡一区二区三区| 91综合久久爱com| 国产精品手机在线播放| 日本免费一区二区三区四区| 亚洲91久久| 亚洲电影在线| 久久国产精品亚洲77777| 日韩久久一区| 国产精品极品| 久久精品高清| 男人操女人的视频在线观看欧美| 亚洲另类av| 国产精品亚洲二区| 精品免费在线| 国产精品婷婷| 日韩专区视频网站| 国产精品日本一区二区不卡视频| 里番精品3d一二三区| 另类中文字幕国产精品| 五月天久久777| 在线精品观看| 亚洲精品裸体| 日韩成人综合| 蜜桃91丨九色丨蝌蚪91桃色| 国产精品日韩精品在线播放| www.51av欧美视频| 国产一区二区中文| 国产九九精品| 激情亚洲影院在线观看| 久久亚洲欧美| 国产日产精品_国产精品毛片| 中文在线а√在线8| 日韩在线成人|