zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    P1631-序列合并
    P1484-种树
    17.树的子结构(python)
    16.合并两个排序的链表(python)
    反转链表
    链表中倒数第k个节点(python)
    调整数组顺序使奇数位于偶数前面(python)
    Spark--wordcount(词频降序)
    数值的整数次方
    二进制中1的个数(python)
  • 原文地址:https://www.cnblogs.com/unknows/p/10307479.html
Copyright © 2011-2022 走看看