Spring在将Advice织入目标对象的Joinpoint是在运行时动态进行的。它采用的方式可能有两种,即JDK动态代理与CGLIB代理。Spring会根据具体的情况在两者之间切换。
实际情况如下:
Ø 如果目标对象实现了接口,那么Spring默认会采用JDK的动态代理实现AOP
Ø 如果目标对象实现了接口,也可以强制使用CGLIB生成代理来 实现AOP
Ø 如果目标对象没有实现接口,那么必须使用CGLIB生成代理来实现AOP
如何强制使用CGLIB生成代理
*加入CGLIB库:Spring_HOME/lib/cglib/*.jar
*在Spring配置文件中加入如下配置,强制使用CGLIB代理
<aop:aspectj-autoproxyproxy-target-class="true"/>
参考:原文:https://blog.****.net/wang379275614/article/details/42218949