Spring AOP中的JDK和CGLIB动态代理

时间:2024-04-30 17:08:44

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