切入点表达式
1 作用
通过表达式的方式定位一个或多个具体的连接点。
2 语法细节
- 切入点表达式的语法格式
execution([权限修饰符] [返回值类型] [简单类名/全类名] [方法名]([参数列表])) |
- 举例说明
表达式 | 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方法 |
3切入点表达式应用到实际的切面类中
![501f6f30d5add46db45e5aa998632ff6.png](https://i-blog.csdnimg.cn/blog_migrate/0f2962ab06f87710391294efe8679610.png)