![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spring
倚伏cc
山水一程,三生有幸。
展开
-
Spring AOP的实现原理
AOP(Aspect Orient Programming),我们一般称为面向切面编程,作为面向对象的一种补充,用于处理系统中分布于各个模块的横切关注点,比如事务管理、日志、缓存等等。AOP实现的关键在于AOP框架自动创建的AOP代理,AOP代理主要分为静态代理和动态代理,静态代理的代表为AspectJ;而动态代理则以Spring AOP为代表。本文会分别对AspectJ和Spring AOP的实...转载 2018-03-16 16:25:50 · 129 阅读 · 0 评论 -
JDK代理和CGLIB代理的区别
JDK动态代理只能对实现了接口的类生成代理,而不能针对类CGLIB是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的方法(继承)(1)当Bean实现接口时,Spring就会用JDK的动态代理(2)当Bean没有实现接口时,Spring使用CGlib是实现(3)可以强制使用CGlib(在spring配置中加入<aop:aspectj-autoproxy proxy-target-cla...转载 2018-03-16 16:28:37 · 3959 阅读 · 0 评论 -
CgLib代理的底层实现
CGLib采用了非常底层的字节码技术,使用字节码处理框架ASM,其原理是通过字节码技术为一个类创建子类,并在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑。JDK动态代理与CGLib动态代理均是实现Spring AOP的基础。CGLib创建的动态代理对象性能比JDK创建的动态代理对象的性能高不少,但是CGLib在创建代理对象时所花费的时间却比JDK多得多,所以对于单例的对象,因为...转载 2018-03-16 16:43:52 · 1156 阅读 · 0 评论