Skip to content

Spring AOP 如何定义 final 方法的切点?

🏷️ Spring

声明了一个切点:

java
@Pointcut("execution(public * com.xxx.api.controller.*.*.*(..))")

但是对应的 controller 中部分方法为 public final 的。这部分方法无法进入切点。

这个是 java 中 final 的机制造成的吗? 还是切点的表达式不对?

2023-02-21 追记

今天偶然看到这篇之前的博客,现在看来,这个应该是由于 Spring 的两种代理类型不支持这些切点导致的:

  • JDK Proxy:这种代理是基于 Java 接口的,而 controller 一般都不定义对应的接口类;

  • CGLIB Porxy:这种代理不支持 final 类和方法;