Spring AOP 面向切面编程:切入点与 XML 声明详解
1. 切入点选择与表达式
在 Spring AOP 中,切入点(Pointcuts)用于精确指定切面的通知(Advice)应应用的位置。它与通知一样,是切面的最基本元素之一,因此了解如何编写切入点至关重要。
Spring AOP 使用 AspectJ 的切入点表达式语言来定义切入点。不过,Spring 仅支持 AspectJ 中可用的一部分切入点指示符(Pointcut Designators),因为 Spring AOP 是基于代理的,某些切入点表达式与基于代理的 AOP 无关。以下是 Spring AOP 支持的 AspectJ 切入点指示符:
| AspectJ 指示符 | 描述 |
| — | — |
| args() | 将连接点匹配限制为参数是给定类型实例的方法执行 |
| @args() | 将连接点匹配限制为参数带有给定注解类型的方法执行 |
| execution() | 匹配方法执行的连接点 |
| this() | 将连接点匹配限制为 AOP 代理的 bean 引用是给定类型的情况 |
| target() | 将连接点匹配限制为目标对象是给定类型的情况 |
| @target() | 将匹配限制为执行对象的类具有给定注解类型的连接点 |
| within() | 将匹配限制为特定类型内的连接点 |
| @within() | 将匹配限制为具有给定注解的类型内的连接点(在使用 Spring AOP 时,是具有给定注解的类型中声明的方法的执行) |
| @annotation | 将连接点匹配限制为连接点的主