守著一只汪
TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
12345678910 | 注解模式的aspectj中,切面邏輯、切入點(diǎn)等都需要集中定義在一個(gè)類(lèi)中。其中: @Pointcut 注解定義了切入點(diǎn),它通過(guò)一個(gè)execution表達(dá)式來(lái)指定需要切入的類(lèi)和方法,將本注解所在的方法與切入的方法綁定,后續(xù)的操作中都直接使用注解所在方法的方法名來(lái)映射被切入的方法(因而本方法只需為空即可)。pointcut可定義多個(gè) Aspectj提供了多種類(lèi)型的切面邏輯:主要有 @After (方法結(jié)束)、 @AfterReturning (方法返回)、 @AfterThrowing (方法拋出異常)、 @Before (方法開(kāi)始前)、 @Around (方法前后)這五個(gè)針對(duì)方法的注入,以及其它一些針對(duì)變量聲明的注入(不常用) 從注解的參數(shù)列表中可以看出該注解所對(duì)應(yīng)的切面邏輯能提供什么樣的參數(shù),如: @AfterReturning 的returning參數(shù),可以指定目標(biāo)方法的返回值在本切面邏輯中的變量名; @AfterThrowing 的throwing參數(shù),可以指定目標(biāo)方法拋出的異常對(duì)象在本切面邏輯中的變量名。除此而外,所有的切面注解都必有兩個(gè)參數(shù):value和argNames,value用于指定pointcut的方法名,argNames則是目標(biāo)方法各參數(shù)在本切面邏輯中的方法名 切面方法自帶一個(gè)參數(shù)叫JoinPoint,其中保存了方法的一些元數(shù)據(jù)信息,最有用的便是可以從中直接獲取參數(shù)對(duì)象列表,以及可以直接獲取到作為注入點(diǎn)的目標(biāo)對(duì)象 |
查看完整回答