PoinCut 切点表达式

PointCut 切点表达式用于指定路径,指定切面在哪些类,哪些方法上面起作用。

还记得上上节用到的 <aop:pointcut> 标签,其核心就是书写里面的 expression 表达式子。

<!-- pointcut 切点表达式: pubilc 访问修饰符, * 任意返回类型, .. 包通配符, *.* 任意类的任意方法, (..) 参数通配符 -->
<!-- 作用于 indi.chester 包下所有public类的运行 -->
<aop:pointcut id="pointcut" expression="execution(public * indi.chester..*.*(..))"/>

总结一下

书写PointCut切点表达式需要知道目标方法的完整路径格式:

访问修饰符 + 返回类型 + 包名 + 类名 + 方法名 + 参数列表

还需要知道三种类型的通配符:

  • .. 包通配符, 所有包

  • (..) 参数通配符,

  • * 其他通配符(访问修饰符, 返回类型,类名, 方法名)

假设要更改一下 pointcut 作用范围,需要在 indi.chester 包下所有public Service类的 有两个参数(第一个参数为String)的方法 运行, 则可以这样写:

<!-- 作用于 indi.chester 包下所有public Service类的 有两个参数(第一个参数为String)的方法 运行 -->
<aop:pointcut id="pointcut" expression="execution(public * indi.chester..*Service.*(String,..))"/>

Last updated