Spring AOP

文章目录

  • 1.JDK动态代理
    • 1.1使用
    • 1.2局限性
  • 2.CGLIB生成代理
  • 3.小结
  • 4.AspectJ

AOP(Aspect-OrientedProgramming,面向切面编程),采用横向抽取机制,取代了传统纵向继承体系重复性代码(性能监视,事物管理,安全检测,缓存)
Spring AOP使用纯java实现,不需要专门的编译过程和类加载器,在运行期通过代理方式向目标类织入增强代码。

1.JDK动态代理

1.1使用

Spring AOP_第1张图片
可参考链接:http://c.biancheng.net/view/4269.html

1.2局限性

局限性:因为 JDK 动态代理必须要实现一个或多个接口,如果不希望实现接口,则可以使用 CGLIB 代理。

2.CGLIB生成代理

这种方法的核心就是Enhancer:
Spring AOP_第2张图片
可参考链接:http://c.biancheng.net/view/4271.html

3.小结

  1. Spring在运行期,生成动态代理对象,不需要特殊的编译器。、
  2. Spring AOP的底层就是通过JDK动态代理或CGLib动态代理技术为目标bean执行横向织入
    2.1 若目标对象实现了若干接口,spring使用JDK的java.lang.reflect.Proxy类代理。
    2.2若目标对象没有实现任何接口,spring使用CGLIB库生成目标对象的子类。

4.AspectJ

AspectJ 是一个基于 Java 语言的 AOP 框架,它扩展了 Java 语言。Spring 2.0 以后,新增了对 AspectJ 方式的支持,新版本的 Spring 框架,建议使用 AspectJ 方式开发 AOP。
可参考:http://c.biancheng.net/view/4275.html

你可能感兴趣的:(java面试,java框架)