02-01 AOP學習之execution

execution:使用“execution(方法表達式)”匹配方法執(zhí)行

模式 描述
public * *(..) 任何公共方法的執(zhí)行
* com.learn..IHelloService.*() com.learn包及所有子包下IHelloService接口中的任何無參方法
* com.learn..*.*(..) com.learn包及所有子包下任何類的任何方法
* com.learn..IHelloService.*(*) com.learn包及所有子包下IHelloService接口的任何只有一個參數(shù)方法
* (!com.learn..IHelloService+).*(..) 非“com.learn包及所有子包下IHelloService接口及子類型”的任何方法
* com.learn..IHelloService+.*() com.learn包及所有子包下IHelloService接口及子類型的的任何無參方法
* com.learn..IHelloService*.test*(java.util.Date) com.learn包及所有子包下IHelloService前綴類型的的以test開頭的只有一個參數(shù)類型為java.util.Date的方法,注意該匹配是根據(jù)方法簽名的參數(shù)類型進行匹配的,而不是根據(jù)執(zhí)行時傳入的參數(shù)類型決定的,如定義方法:public void test(Object obj);即使執(zhí)行時傳入java.util.Date,也不會匹配的;
* com.learn..IHelloService.test(..) throws IllegalArgumentException, ArrayIndexOutOfBoundsException com.learn包及所有子包下IHelloService前綴類型的的任何方法,且拋出IllegalArgumentException和ArrayIndexOutOfBoundsException異常
* (com.learn..IHelloService+ && java.io.Serializable+).*(..) 任何實現(xiàn)了com.learn包及所有子包下 IHelloService接口和java.io.Serializable接口的類型的任何方法
@java.lang.Deprecated * *(..) 任何持有@java.lang.Deprecated注解的方法
@(java.lang.Deprecated || com.learn..Secure) * *(..) 任何持有@java.lang.Deprecated或@com.learn..Secure注解的方法
(@com.learn..Secure *) *(..) 任何返回值類型持有@com.learn..Secure的方法
* (@com.learn..Secure *).*(..) 任何定義方法的類型持有@com.learn..Secure的方法
* *(@com.learn..Secure (*) , @com.learn..Secure (*)) 任何簽名帶有兩個參數(shù)的方法,且這個兩個參數(shù)都被@Secure標記了,如public void test(@Secure String str1, @Secure String str1)
* *((@ com.learn..Secure *))或 * *(@ com.learn..Secure *) 任何帶有一個參數(shù)的方法,且該參數(shù)類型持有@com.learn..Secure;如public void test(Model model);且Model類上持有@Secure注解
* *( @com.learn..Secure (@com.learn..Secure *) , @ com.learn..Secure (@com.learn..Secure *)) 任何帶有兩個參數(shù)的方法,且這兩個參數(shù)都被@com.learn..Secure標記了;且這兩個參數(shù)的類型上都持有@ com.learn..Secure;
* *( java.util.Map<com.learn..Model, com.learn..Model> , ..) 任何帶有一個java.util.Map參數(shù)的方法,且該參數(shù)類型是以< com.learn..Model, com.learn..Model >為泛型參數(shù);注意只匹配第一個參數(shù)為java.util.Map,不包括子類型;如public void test(HashMap<Model, Model> map, String str);將不匹配,必須使用“* *( java.util.HashMap<com.learn..Model,com.learn..Model> , ..)”進行匹配; 而public void test(Map map, int i);也將不匹配,因為泛型參數(shù)不匹配 * *(java.util.Collection<@com.learn..Secure *>) 任何帶有一個參數(shù)(類型為java.util.Collection)的方法,且該參數(shù)類型是有一個泛型參數(shù),該泛型參數(shù)類型上持有@com.learn..Secure注解; 如public void test(Collection<Model> collection);Model類型上持有@com.learn..Secure * *(java.util.Set<? extends HashMap>) 任何帶有一個參數(shù)的方法,且傳入的參數(shù)類型是有一個泛型參數(shù),該泛型參數(shù)類型繼承與HashMap; Spring AOP目前測試不能正常工作
* *(java.util.List<? super HashMap>) 任何帶有一個參數(shù)的方法,且傳入的參數(shù)類型是有一個泛型參數(shù),該泛型參數(shù)類型是HashMap的基類型;如public voi test(Map map);Spring AOP目前測試不能正常工作
* *(*<@com.learn..Secure *>) 任何帶有一個參數(shù)的方法,且該參數(shù)類型是有一個泛型參數(shù),該泛型參數(shù)類型上持有@com.learn..Secure注解;Spring AOP目前測試不能正常工作

execution是AOP匹配中的基礎,可以參考表格自己寫例子。
或者可以參看源碼

目錄

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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