一、作用
通过表达式的方式定位一个或多个具体的连接点,即切入点(被通知的方法的位置)。
二、语法细节
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方法 |

本文详细解析了AOP(面向切面编程)中切点表达式的使用方法,包括其基本语法、如何通过表达式定位具体连接点,以及如何组合使用逻辑操作符。通过实例演示了不同场景下切点表达式的应用。
587

被折叠的 条评论
为什么被折叠?



