通知有哪些類型?
前置通知(Before advice):在某連接點(diǎn)(join point)之前執(zhí)行的通知伪节,但這個通知不能阻止連接點(diǎn)前的執(zhí)行(除非它拋出一個異常)光羞。
返回后通知(After returning advice):在某連接點(diǎn)(join point)正常完成后執(zhí)行的通知:例如,一個方法沒有拋出任何異常怀大,正常返回纱兑。
拋出異常后通知(After throwing advice):在方法拋出異常退出時執(zhí)行的通知。
后通知(After (finally) advice):當(dāng)某連接點(diǎn)退出的時候執(zhí)行的通知(不論是正常返回還是異常退出)叉寂。
環(huán)繞通知(Around Advice):包圍一個連接點(diǎn)(join point)的通知萍启,如方法調(diào)用婚被。這是最強(qiáng)大的一種通知類型永罚。?環(huán)繞通知可以在方法調(diào)用前后完成自定義的行為。它也會選擇是否繼續(xù)執(zhí)行連接點(diǎn)或直接返回它們自己的返回值或拋出異常來結(jié)束執(zhí)行状植。
環(huán)繞通知是最常用的一種通知類型钓瞭。大部分基于攔截的AOP框架驳遵,例如Nanning和JBoss4,都只提供環(huán)繞通知山涡。
切入點(diǎn)(pointcut)和連接點(diǎn)(join point)匹配的概念是AOP的關(guān)鍵堤结,這使得AOP不同于其它僅僅提供攔截功能的舊技術(shù)。?切入點(diǎn)使得定位通知(advice)可獨(dú)立于OO層次鸭丛。?例如竞穷,一個提供聲明式事務(wù)管理的around通知可以被應(yīng)用到一組橫跨多個對象中的方法上(例如服務(wù)層的所有業(yè)務(wù)操作)