Spring AOP的实现图解

   Spring AOP就是基于动态代理的,如果要代理的对象,实现了某个接口,那么Spring AOP会使用JDK Proxy,去创建代理对象,而对于没有实现接口的对象,就无法使用JDK Proxy去进行代理了(为啥?你写一个JDK Proxy的demo就知道了),这时候Spring AOP会使用Cglib,生成一个被代理对象的子类,来作为代理,放一张图出来就明白了:

Spring AOP的实现图解_第1张图片
  好,上面讲的是AOP的第一种实现,运行时织入

  但是不是所有AOP的实现都是在运行时进行织入的,因为这样效率太低了,而且只能针对方法进行AOP,无法针对构造函数、字段进行AOP。

  我完全可以在编译成class时就织入啊,比如AspectJ,当然AspectJ还提供了后编译器织入和类加载期织入,这里我就不展开讨论了,我只是来澄清一下大家对AOP的误解,


Comparing Spring AOP and AspectJ
https://www.baeldung.com/spring-aop-vs-aspectj

源回答链接:
链接:https://www.zhihu.com/question/24863332/answer/350410712

你可能感兴趣的:(Spring,AOP,aop,Spring)