Spring AOP

AOP稱為面向切面編程,一般用戶日志,事務(wù)、權(quán)限、多數(shù)據(jù)源切換,攔截器設(shè)計就是基于AOP的思想。Spring默認(rèn)使用JDK動態(tài)代理,在需要代理類而不是代理接口的時候,Spring會自動切換為使用CGLIB代理。

基本概念

  • Aspect(切面):通常是一個類,里面可以定義切入點和通知
  • JointPoint(連接點):程序執(zhí)行過程中明確的點,一般是方法的調(diào)用
  • Advice(通知):AOP在特定的切入點上執(zhí)行的增強(qiáng)處理,有before,after,afterReturning,afterThrowing,around
    -Pointcut(切入點):就是帶有通知的連接點,在程序中主要體現(xiàn)為書寫切入點表達(dá)式
    -AOP代理:AOP框架創(chuàng)建的對象,代理就是目標(biāo)對象的加強(qiáng)。Spring中的AOP代理可以使JDK動態(tài)代理,也可以是CGLIB代理,前者基于接口,后者基于子類

注解方式

  • @EnableAspectjAutoProxy, 開啟基于注解AOP模式
  • @AsjectJ, 啟用AsjectJ支持
  • @Pointcut,抽取公共的切入點

通知類型

  • Before:在目標(biāo)方法被調(diào)用之前做增強(qiáng)處理,@Before只需要指定切入點表達(dá)式即可
  • AfterReturning:在目標(biāo)方法正常完成后做增強(qiáng),@AfterReturning除了指定切入點表達(dá)式后,還可以指定一個返回值形參名returning,代表目標(biāo)方法的返回值
  • AfterThrowing:主要用來處理程序中未處理的異常,@AfterThrowing除了指定切入點表達(dá)式后,還可以指定一個throwing的返回值形參名,可以通過該形參名
  • After:在目標(biāo)方法完成之后做增強(qiáng),無論目標(biāo)方法時候成功完成。@After可以指定一個切入點表達(dá)式
  • Around:環(huán)繞通知,在目標(biāo)方法完成前后做增強(qiáng)處理
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容