美文网首页
spring aop

spring aop

作者: tracy_668 | 来源:发表于2018-03-29 16:53 被阅读11次

           spring的aop本质上是使用了代理模式。什么是代理模式?如果要为已存在的多个具有相同接口的目标类的各个方法增加一些系统功能,比如事务管理、日志、计算方法的运行时间等,如何实现? 编写一个与目标类相同接口的代理类,代理类的每个方法都调用目标类的相同方法,并在调用方法时加上系统功能的代码。

            aop实质上是让交叉业务模块只写一份。如果为系统的各种接口的类增加代理功能,那就需要太多的代理类。全部采用静态代理方式,太麻烦!!jvm可以在运行期动态生成出类的字节码,这种动态生成的类往往被用作代理类,也即动态代理类。

          上面没有提到proxy.newProxyInstance的实现,在jdk动态代理有详细介绍。aop的拦截功能就是通过java的动态代理实现,在目标类的基础上增加切面逻辑,生成增强的目标类。aop源码用到了两种动态代理来实现拦截切入功能,jdk动态代理和cglib动态代理,jdk的动态代理由java的反射机制和动态编译技术实现,cglib动态代理底层借助asm来实现。jdk的动态代理目标类必须实现接口,cglib这种第三方库实现的动态代理则没有这种限制。

    相关文章

      网友评论

          本文标题:spring aop

          本文链接:https://www.haomeiwen.com/subject/fqsscftx.html