详细参考:
https://www.cnblogs.com/zhangxufeng/p/9160869.html
1. @annotation()
表示匹配使用@annotation指定注解标注的方法将会被环绕
代码:
@Before(value = "@annotation(com.ghq.cloud.anno.NeedTest)")
2. execution()
语法:execution(<修饰符模式>? <返回值模式> <方法名模式>(<参数模式>) <异常模式>?)
例1:
execution(public * *(..)) :
表示匹配所有目标类的public方法,非public方法不匹配。
第一个 * 代表返回值类型,(* 表示匹配所有)
第二个 * 代表方法名
括号内 .. 代表任意入参的方法
例2:
execution(* *To(..)) :
表示匹配所有的以To为后缀的目标方法。
例3:
execution(* com.abc.Waiter.*(..)) :
表示匹配com.abc.Waiter中所有的方法
第一个 * 代表 所有的返回值类型
第一个 * 代表所有的方法名
例4:
execution(* com.abc.Waiter+.*(..)) :
表示匹配com.abc.Waiter以及其子类(子类的方法可以不在父类中声明)中所有的方法
例5:
execution(* com.abc.*(..)) :
表示匹配包 com.abc 下所有类
例6:
execution(* com.abc..*(..)) :
表示匹配包 com.abc 以及其子包,孙子包 下所有类
例7:
execution(* com..*.*Dao.find*(..)) :
表示匹配包 com以及其子包,孙子包 下所有以Dao为或追的类的所有的以find开头的所有方法