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

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

java - 如何在Spring的@Transaction層面上對(duì)異常進(jìn)行日志記錄?

瀏覽:205日期:2022-06-11 18:12:57

問題描述

在沒使用@Transaction之前,我的業(yè)務(wù)代碼模型大概就是下面這樣:

DefaultTransactionDefinition def = new DefaultTransactionDefinition();def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(def);try { studentMapper.insertOnestdent(student); logger.info('Insert one record successfully: ' + student.toString());} catch (Exception ex) { dataSourceTransactionManager.rollback(transactionStatus); // ex.printStackTrace(); logger.error('Insert one record unsuccessfully: ' + student.toString()); return false;}dataSourceTransactionManager.commit(transactionStatus);return true;

類似上面這樣的話不管我上面的數(shù)據(jù)庫(kù)操作執(zhí)行成功還是執(zhí)行失敗,我在日志中都可以得到反饋。

但是上面這樣的做法,會(huì)造成大量的代碼的重復(fù),利用spring提供的aop可以實(shí)現(xiàn)這樣的日志功能,但是后來看文檔發(fā)現(xiàn)有一個(gè)@Transaction注解,使用這個(gè)注解,代碼可以簡(jiǎn)化成下面這個(gè)樣子:

@Transactional(rollbackFor = Exception.class) public boolean insertOneStudent(Student student) {studentMapper.insertOneStudent(student);logger.info('Insert one student successfully' + student.toString());return true; }

這樣當(dāng)數(shù)據(jù)庫(kù)操作執(zhí)行成功的時(shí)候我可以日志中成功的進(jìn)行記錄,但是這樣的話當(dāng)插入操作執(zhí)行失敗的時(shí)候我應(yīng)該如何在日志中進(jìn)行記錄。

我現(xiàn)在的初步想法是自己手動(dòng)實(shí)現(xiàn)一個(gè)類似@Transaction的動(dòng)態(tài)反射的功能,這樣每個(gè)要影響數(shù)據(jù)庫(kù)中的數(shù)據(jù)修改的方法執(zhí)行的時(shí)候我都在動(dòng)態(tài)反射的invoke()方法中進(jìn)行異常的try catch的處理。但是不知道spring是否內(nèi)置這樣的功能?

p.s: 我盡量想將數(shù)據(jù)庫(kù)的操作與處理全部放在service層面來處理,不想將日志記錄的往上面拋。

問題解答

回答1:

insertOneStudent方法整個(gè)try catch

try {...} catch (Exception e) { logger.error(e.getMessage(), e); throw e;}

或者實(shí)現(xiàn)@RestControllerAdvice,在里面統(tǒng)一打印異常日志像這樣:

@RestControllerAdvicepublic class MyExceptionHandler { @ExceptionHandler(value = Exception.class) public Object exceptionHandler(HttpServletRequest request, Exception exception) {logger.warn('異常:', exception);... }}回答2:

spring也有提供切面的異常處理

<!--aop配置 --> <aop:config><!-- 業(yè)務(wù)類切面 --><aop:pointcut expression='【這里填寫切面的匹配規(guī)則】' /><!-- 異常處理 --><aop:aspect ref='【處理異常的類ID】'> <aop:after-throwing method='【處理異常的方法名稱】' pointcut-ref='【切面ID】' throwing='e' /></aop:aspect> </aop:config>

當(dāng)然,有xml配置就會(huì)有注解配置。主要有下面幾個(gè)注解

@Aspect 聲明切面配置

@Pointcut 聲明切面

@AfterThrowing 聲明處理方法

注意事項(xiàng):

處理異常的類是不需要實(shí)現(xiàn)任何接口和繼承任何類的。

處理異常的方法要聲明兩個(gè)參數(shù)(不聲明也可以,獲取不了異常信息而已),舉個(gè)例子

public void test(JoinPoint joinPoint, Exception e)

其中joinPoint參數(shù)可以獲取拋出異常的方法參數(shù)信息,Exception對(duì)象就不用說了吧。

以上內(nèi)容僅做參考,spring的版本不同也可能會(huì)導(dǎo)致上述說明和實(shí)際情況有差異,想獲取標(biāo)準(zhǔn)的說明請(qǐng)參閱Spring的官方文檔

相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
极品日韩av| 国产日韩欧美高清免费| 美女久久久精品| 国产精品久久久网站| 国产精品qvod| 丰满少妇一区| 97se综合| 黄色免费成人| 亚洲精品黄色| 国产日韩中文在线中文字幕| 国产精品嫩草影院在线看| 欧美国产专区| 九九色在线视频| 欧美专区在线| 亚洲综合二区| 日本一区福利在线| 久久丁香四色| а√天堂8资源在线| 99久久久久国产精品| 先锋影音国产一区| 91国内精品| 国产中文在线播放| 午夜久久黄色| 欧美综合社区国产| 福利欧美精品在线| 久久精品国产亚洲夜色av网站| 国产一区日韩一区| 亚洲91在线| 久久久国产精品网站| 91综合视频| 亚洲综合欧美| 国产精品啊v在线| 成人va天堂| 视频精品一区| 亚洲精品福利电影| 先锋影音久久久| 国产午夜久久av| 日韩久久一区二区三区| 香蕉成人久久| 精品中国亚洲| 欧美日韩国产综合网| 欧美一区二区三区久久精品| 麻豆理论在线观看| 亚洲男人在线| 国内一区二区三区| 国产精品毛片| 国内一区二区三区| 三级一区在线视频先锋| 麻豆久久一区二区| 国产亚洲欧洲| 久久中文精品| 国产模特精品视频久久久久| 麻豆精品少妇| 蜜臀av国产精品久久久久| 精品视频在线你懂得| 丝袜亚洲精品中文字幕一区| 美女久久久精品| 亚洲欧美日韩国产综合精品二区 | 婷婷六月综合| 青青草91视频| 国户精品久久久久久久久久久不卡| 日韩精品欧美成人高清一区二区| 亚洲播播91| 国产欧美日韩在线一区二区 | 日韩精品中文字幕第1页| 中文字幕日韩亚洲| 午夜精品成人av| 国产精品欧美一区二区三区不卡| 中文一区在线| 美女av一区| 中文字幕日韩高清在线| 欧美成人基地| 九九九精品视频| 一区二区不卡| 今天的高清视频免费播放成人| 国产精品对白| 涩涩涩久久久成人精品| 欧美精品羞羞答答| 激情黄产视频在线免费观看| 欧美日韩调教| 玖玖精品视频| 久久麻豆精品| 高清一区二区| 国产精品一区二区三区av| 亚洲经典在线| 免费污视频在线一区| 精品伊人久久久| 欧美日韩va| 日韩中文字幕av电影| 久久久久久美女精品| 国产一区二区三区网| 亚洲视频国产| 午夜免费一区| 成人片免费看| 日产精品一区二区| 国产精品久久久久久av公交车| 亚洲开心激情| 免费欧美日韩| 伊人精品视频| 久久精品影视| av在线最新| 9999国产精品| 国产不卡精品| 久久免费视频66| 国产精品免费精品自在线观看| 日产欧产美韩系列久久99| 久久国产福利| 国产麻豆综合| 亚洲欧美日韩视频二区| 亚洲黄色影院| 久久成人一区| 亚洲最新av| 亚洲一区二区三区四区电影 | 国产综合精品| 久久国产欧美| 色婷婷久久久| 成人日韩在线| а√天堂8资源中文在线| 国产一区二区三区日韩精品| 国产精品啊v在线| 国产精品久久国产愉拍| 欧美精品第一区| 精品久久一区| xxxxx性欧美特大| 亚洲成人二区| 亚洲成人一区| 免费视频久久| 亚洲精品三级| 天堂精品久久久久| 日韩精品亚洲专区| 国产欧美日韩在线一区二区| 国产精品调教| 精品国产精品久久一区免费式| 国产精品久久观看| 日韩欧美精品一区| 欧美高清不卡| 综合视频一区| 国产精品成人自拍| 91偷拍一区二区三区精品| 伊人久久视频| av亚洲免费| 亚洲精品系列| 欧美激情五月| 精品一区二区三区在线观看视频| 欧美xxxx中国| 亚洲午夜精品久久久久久app| 怡红院精品视频在线观看极品| 亚洲久久视频| 久久精品免费看| 91精品国产成人观看| 国产精品毛片| 欧美日韩夜夜| 黄色网一区二区| 91精品成人| 91成人小视频| 高清在线一区| 国产手机视频一区二区| 日韩精品视频网| 久久亚洲人体| 激情久久久久久久| 日本一区二区三区中文字幕| 精品免费av| 亚洲一区免费| 国产精品久久久久久久久久白浆| 日本欧美不卡| 亚洲综合福利| 国产一区二区亚洲| 中文一区在线| 国产精品videossex| 欧美成a人免费观看久久| 综合干狼人综合首页| 国产一区国产二区国产三区 | 日韩欧美中文| 丝袜a∨在线一区二区三区不卡| 国产精品视频一区二区三区四蜜臂 | 精品色999| 亚洲免费精品| 国产伦精品一区二区三区千人斩 | 日韩在线观看中文字幕| 精品午夜av| 日韩中文字幕一区二区三区| 久久这里只有精品一区二区| 亚洲欧洲一区| 美女免费视频一区| 老色鬼久久亚洲一区二区| 久久中文欧美| 久久xxxx精品视频| 精品一二三区| 亚洲免费在线| 国产va在线视频| 91欧美极品| 99热免费精品| 精品日韩一区| 少妇高潮一区二区三区99| 欧美日韩视频免费观看| 青青草国产成人99久久| 国产专区一区| 精品一区二区三区视频在线播放| 亚洲有吗中文字幕| 亚洲高清激情|