使用AOP記錄異常日志

AOP稱為面向切面編程奸绷,在程序開發(fā)中主要用來解決一些系統(tǒng)層面上的問題,比如日志借浊,事務(wù)塘淑,權(quán)限等等

一、AOP基本概念

  • Aspect(切面):通常是一個(gè)類蚂斤,里面可以定義切入點(diǎn)和通知

  • JointPoint(連接點(diǎn)):程序執(zhí)行過程中明確的點(diǎn)存捺,一般是方法的調(diào)用

  • Advice(通知):AOP在特定的切入點(diǎn)上執(zhí)行的增強(qiáng)處理,定義了切面是什么及何時(shí)使用曙蒸,應(yīng)該應(yīng)用在某個(gè)方法被調(diào)用之前捌治,調(diào)用之后,還是拋出異常時(shí)纽窟。有before,after,afterReturning,afterThrowing,around

  • Pointcut(切入點(diǎn)):就是帶有通知的連接點(diǎn)肖油,在程序中主要體現(xiàn)為書寫切入點(diǎn)表達(dá)式(即aop攔截的方法)

  • AOP代理:AOP框架創(chuàng)建的對(duì)象,代理就是目標(biāo)對(duì)象的加強(qiáng)师倔。Spring中的AOP代理可以使JDK動(dòng)態(tài)代理构韵,也可以是CGLIB代理,前者基于接口趋艘,后者基于子類

二疲恢、實(shí)現(xiàn)策略

  1. Java SE動(dòng)態(tài)代理:
    使用動(dòng)態(tài)代理可以為一個(gè)或多個(gè)接口在運(yùn)行期動(dòng)態(tài)生成實(shí)現(xiàn)對(duì)象,生成的對(duì)象中實(shí)現(xiàn)接口的方法時(shí)可以添加增強(qiáng)代碼瓷胧,從而實(shí)現(xiàn)AOP显拳。缺點(diǎn)是只能針對(duì)接口進(jìn)行代理,另外由于動(dòng)態(tài)代理是通過反射實(shí)現(xiàn)的搓萧,有時(shí)可能要考慮反射調(diào)用的開銷杂数。

  2. 字節(jié)碼生成(CGLib 動(dòng)態(tài)代理)
    動(dòng)態(tài)字節(jié)碼生成技術(shù)是指在運(yùn)行時(shí)動(dòng)態(tài)生成指定類的一個(gè)子類對(duì)象,并覆蓋其中特定方法瘸洛,覆蓋方法時(shí)可以添加增強(qiáng)代碼揍移,從而實(shí)現(xiàn)AOP。其常用工具是cglib反肋。

  3. 定制的類加載器
    當(dāng)需要對(duì)類的所有對(duì)象都添加增強(qiáng)那伐,動(dòng)態(tài)代理和字節(jié)碼生成本質(zhì)上都需要?jiǎng)討B(tài)構(gòu)造代理對(duì)象,即最終被增強(qiáng)的對(duì)象是由AOP框架生成石蔗,不是開發(fā)者new出來的罕邀。解決的辦法就是實(shí)現(xiàn)自定義的類加載器,在一個(gè)類被加載時(shí)對(duì)其進(jìn)行增強(qiáng)养距。JBoss就是采用這種方式實(shí)現(xiàn)AOP功能诉探。

  4. 代碼生成
    利用工具在已有代碼基礎(chǔ)上生成新的代碼,其中可以添加任何橫切代碼來實(shí)現(xiàn)AOP棍厌。

  5. 語言擴(kuò)展
    可以對(duì)構(gòu)造方法和屬性的賦值操作進(jìn)行增強(qiáng)肾胯,AspectJ是采用這種方式實(shí)現(xiàn)AOP的一個(gè)常見Java語言擴(kuò)展竖席。

三、使用AOP記錄異常信息

1阳液、啟用@AsjectJ支持


//注解啟用的方式

@EnableAspectJAutoProxy

//xml啟用的方式

<aop:aspectj-autoproxy/>


2怕敬、定義一個(gè)切面


import org.aspectj.lang.JoinPoint;

import org.aspectj.lang.annotation.AfterThrowing;

import org.aspectj.lang.annotation.Aspect;

import org.springframework.stereotype.Component;

@Aspect

@Component

public class ExceptionTaken {

@AfterThrowing(throwing = "ex", pointcut = "execution(* com.lzhwy.boot_1.service.BootService..*(..))")

public void takeExceptionLog(JoinPoint joinPoint, Throwable ex) {

System.out.println(joinPoint.getSignature().getName() + "出現(xiàn)異常了");

System.out.println(ex.getMessage());

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末揣炕,一起剝皮案震驚了整個(gè)濱河市帘皿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌畸陡,老刑警劉巖鹰溜,帶你破解...
    沈念sama閱讀 223,207評(píng)論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異丁恭,居然都是意外死亡曹动,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門牲览,熙熙樓的掌柜王于貴愁眉苦臉地迎上來墓陈,“玉大人,你說我怎么就攤上這事第献」北兀” “怎么了?”我有些...
    開封第一講書人閱讀 170,031評(píng)論 0 366
  • 文/不壞的土叔 我叫張陵庸毫,是天一觀的道長(zhǎng)仔拟。 經(jīng)常有香客問我,道長(zhǎng)飒赃,這世上最難降的妖魔是什么利花? 我笑而不...
    開封第一講書人閱讀 60,334評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮载佳,結(jié)果婚禮上炒事,老公的妹妹穿的比我還像新娘。我一直安慰自己蔫慧,他們只是感情好挠乳,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,322評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著藕漱,像睡著了一般欲侮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肋联,一...
    開封第一講書人閱讀 52,895評(píng)論 1 314
  • 那天威蕉,我揣著相機(jī)與錄音,去河邊找鬼橄仍。 笑死韧涨,一個(gè)胖子當(dāng)著我的面吹牛牍戚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播虑粥,決...
    沈念sama閱讀 41,300評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼如孝,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了娩贷?” 一聲冷哼從身側(cè)響起第晰,我...
    開封第一講書人閱讀 40,264評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎彬祖,沒想到半個(gè)月后茁瘦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,784評(píng)論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡储笑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,870評(píng)論 3 343
  • 正文 我和宋清朗相戀三年甜熔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片突倍。...
    茶點(diǎn)故事閱讀 40,989評(píng)論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡腔稀,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出羽历,到底是詐尸還是另有隱情焊虏,我是刑警寧澤,帶...
    沈念sama閱讀 36,649評(píng)論 5 351
  • 正文 年R本政府宣布窄陡,位于F島的核電站炕淮,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏跳夭。R本人自食惡果不足惜涂圆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,331評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望币叹。 院中可真熱鬧润歉,春花似錦、人聲如沸颈抚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,814評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贩汉。三九已至驱富,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間匹舞,已是汗流浹背褐鸥。 一陣腳步聲響...
    開封第一講書人閱讀 33,940評(píng)論 1 275
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赐稽,地道東北人叫榕。 一個(gè)月前我還...
    沈念sama閱讀 49,452評(píng)論 3 379
  • 正文 我出身青樓浑侥,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親晰绎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子寓落,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,995評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容