在我的应用程序中,我有一个实现接口 A 和接口 B 的类 X。我使用 Spring AOP 和 AspectJ 实现了一个方面,并在接口 A 的每个方法上都有一个切入点。
在调试应用程序时,我注意到 Spring 使用 CGLIB 而不是 JDK 动态代理创建代理。这种行为的原因是什么?因为类 X 实现了接口,所以不应该将代理创建为动态代理吗?我不明白。
您可能使用 Spring Boot,而不是普通的 Spring。即使对于接口代理,引导也默认为 CGLIB,需要覆盖它。更具体地说,您需要将其放入您的
application.properties
:
spring.aop.proxy-target-class=false
另请参阅我的回答: