• aspectj 表达式 execution切点函数


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

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

    参数部分允许使用通配符:

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

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

    +  必须跟在类名后面,如Superman+,表示类本身和继承或扩展指定类的所有类

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

    方法修饰符  无

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

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

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

    异常模式       不限

    例如1:

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

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

     2.、方法修饰符  无

     3、第一个*号:表示返回类型,*号表示所有的类型。

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

     5、第二个*号:表示类名,*号表示所有的类。

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

     7、异常模式 不限

    例如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)

  • 相关阅读:
    【leetcode】423. Reconstruct Original Digits from English
    【leetcode】435. Non-overlapping Intervals
    【leetcode】424. Longest Repeating Character Replacement
    【leetcode】519. Random Flip Matrix
    【leetcode】995. Minimum Number of K Consecutive Bit Flips
    【leetcode】1001. Grid Illumination
    【leetcode】1002. Find Common Characters
    【leetcode】1003. Check If Word Is Valid After Substitutions
    L95
    T61
  • 原文地址:https://www.cnblogs.com/unknows/p/10307479.html
Copyright © 2020-2023  润新知