AOP之SpringAOP、AspectJ、CGlib

Java中常见到的aop就这三种了:SpringAOP、AspectJ、CGlib

  1. SpringAOP是纯基于Java的反射机制来实现的,速度较慢但是通用且强大,只能基于接口实现aop代理增强,运行时动态执行;
  2. AspectJ是基于AOP这一哲学设计理念的实践,是基于Java的扩展,在编译时对目标类(非接口实现类也可)进行aop代理增强,运行时直接调用字节码;
  3. CGlib全称Code Generation Library,即代码生成包,底层是ASM-一个短小精悍的字节码操作框架,运行时对无接口实现的非final类进行字节码aop代理增强;

相比较而言,反射效率是比较低的,而字节码更高效,执行速度比较:
AspectJ > CGlib > SpringAOP

AOP的切点、切面、通知等概念就不在此赘述了;
暂写这么多,后续有新的再补充...

原文地址:https://www.cnblogs.com/izhoujie/p/12512907.html