基於AspectJ就是基於@AspectJ注解,基於Schema就是全部依靠配置文件。那麼首先要了解Java注解。
Java注解初探
在JDK5.0中,我們可以自定義標簽,並通過Java語言的反射機制獲取類中標注的注解,完成特定的功能。
注解不能直接干擾程序代碼的運行,無論增加或者刪除注解,代碼都能夠正常運行。
注解舉例三步走:
第一步:定義注解和成員變量:
備注:
使用@interface修飾符定義注解類;
@Retention(…RUNTIME)表示該注解可以在運行期被JVM讀取;
@Target(…METHOD)表示這個注解只能被用到目標類的方法上。
第二步:把注解和成員變量標注在目標方法上。
第三步:獲取目標方法上所標注的注解對象,然後利用注解的成員變量為目標方法做一些事情。
基於AspectJ注解的AOP
有了前幾篇關於增強、切面的例子和java注解的基礎,用下面的例子便能清晰認識@AspectJ的用法。
第一步:目標類定義:
第二步:用@AspectJ定義一個切面
@Before是增強類型,還有許多:
第三步,用AspectJproxyFactory織入切面
第三步的Schema命名空間方式:
上例中切面的定義中beforeGreeting()方法沒有任何入參,因此暫時無法訪問目標連接點的信息。
上例中的execution(*greetTo(..))是切點表達式(函數),execution是關鍵字,後面是操作參數(入參)。
切點函數還有很多,可以大概了解一下:
類別
函數
入參
說明
方法切點函數
execution()