你所在的位置: 首页 > 正文

Spring AOP的实现原理

2019-09-11 点击:1864

AOP(Aspect Orient Programming),我们通常被称为面向方面(切割)编程,作为面向对象的补充,用于处理分布在系统中各个模块中的横切关注点,例如事务管理,日志记录,缓存等等。 AOP实现的关键是AOP框架自动创建的AOP代理。 AOP代理主要分为静态代理和动态代理。静态代理由AspectJ表示。动态代理由Spring AOP表示。本文将分析和介绍AspectJ和Spring AOP的实现。

使用AspectJ的编译时增强实现AOP

如前所述,AspectJ是静态代理的增强。所谓的静态代理是AOP框架将在编译阶段生成AOP代理类,因此它也称为编译时增强。

举个例子。首先我们有一个普通的Hello类

输出

之前 - sayHello() - class com.listenzhangbin.aop.Chinese $$ EnhancerBySpringCGLIB $$ 56b

您可以看到CGLIB增强了该类,CGLIB是一个动态代理。这里的CGLIB代理是Spring AOP的代理。该类也称为AOP代理。 AOP代理类在切入点处动态编织增强处理。

小结

AspectJ在编译时增强目标对象。 Spring AOP的动态代理每次运行时都会动态增强,生成AOP代理对象。不同之处在于生成AOP代理对象的时间不同。相对而言,AspectJ的静态代理模式具有更好的性能,但AspectJ需要特定的编译器才能处理,而Spring AOP则不需要特定的编译器来处理。

原始地址:

作者:听

网赌fg电子 版权所有© www.2018sjbbbs.com 技术支持:网赌fg电子 | 网站地图