一、作用
通过表达式的方式定位一个或多个具体的连接点,即切入点(被通知的方法的位置)。
二、语法细节
1.切入点表达式的语法格式
execution([权限修饰符] [返回值类型] [简单类名/全类名] [方法名][参数列表])
2.举例说明
表达式 | 含义 |
---|---|
execution(* com.atguigu.spring.ArithmeticCalculator.*(..)) | ArithmeticCalculator接口中声明的所有方法 第一个“”代表任意修饰符及任意返回值 第二个“”代表任意方法 “…”匹配任意数量、任意类型的参数 若目标类、接口与该切面类在同一个包中可以省略包名 |
execution(public * ArithmeticCalculator.*(..)) | ArithmeticCalculator接口的所有公有方法 |
execution(public double ArithmeticCalculator.*(..)) | ArithmeticCalculator接口中返回double类型数值的方法 |
execution(public double ArithmeticCalculator.*(double, ..)) | 第一个参数为double类型的方法 “…” 匹配任意数量、任意类型的参数 |
execution(public double ArithmeticCalculator.*(double, double)) | 参数类型为double,double类型的方法 |
3.在AspectJ中,切入点表达式可以通过 “&&”、“||”、“!”等操作符结合起来。
表达式 | 含义 |
---|---|
execution (* *.add(int,..)) || execution(* *.sub(int,..)) | 任意类中第一个参数为int类型的add方法或sub方法 |
!execution (* *.add(int,..)) | 匹配不是任意类中第一个参数为int类型的add方法 |