aspectj 表达式 execution切点函数

execution函数用于匹配方法执行的链接点,语法为:函数

execution(方法修饰符(可选) 返回类型 方法名(参数) 异常模式(可选))继承

参数部分容许使用通配符:io

*  匹配任意字符,但只能匹配一个元素扩展

.. 匹配任意字符,能够匹配任意多个元素,表示类时,必须和*联合使用object

+  必须跟在类名后面,如Superman+,表示类自己和继承或扩展指定类的全部类service

 

示例中的* run(..)解读为:语法

方法修饰符  无方法

返回类型      *匹配任意数量字符,表示返回类型不限im

方法名          run表示匹配名称为run的方法demo

参数               (..)表示匹配任意数量和类型的输入参数

异常模式       不限

例如1:

定义切入点表达式  execution (* com.demo.service.impl..*.*(..))

 一、execution(): 表达式主体。

 2.、方法修饰符  无

 三、第一个*号:表示返回类型,*号表示全部的类型。

 四、包名:表示须要拦截的包名,后面的两个句点表示当前包和当前包的全部子包,com.demo.service.impl包、子孙包下全部类的方法。

 五、第二个*号:表示类名,*号表示全部的类。

 六、*(..):最后这个星号表示方法名,*号表示全部的方法,后面括弧里面表示方法的参数,两个句点表示任何参数。

 七、异常模式 不限

例如2:

 execution(* com..*.*Dao.find*(..))

匹配包名前缀为com的任何包下类名后缀为Dao的方法,方法名必须以find为前缀。如com.baobaotao.UserDao  findByUserId()、com.baobaotao.dao.ForumDao  findById()的方法都匹配切点

例如3:

 execution(* joke(Object+)))

匹 配目标类中的joke()方法,方法拥有一个入参,且入参是Object类型或该类的子类。它匹配joke(String s1)。若是咱们定义的切点是execution(* joke(Object)),则只匹配joke(Object object)而不匹配joke(String cc)

相关文章
相关标签/搜索