代理模式:翻阅设计模式篇,代理模式
代理类型:
静态代理:委托类必须实现接口的前提下,代理类实现同样的接口 在变量中存在委托类,通过重写方法进行代理。
缺点:一个代理只能代理一种类型,编译器阶段已经确定被代理的对象。
动态代理:
运行时,通过反射机制实现动态代理。
JDK动态代理:通过对被代理类的接口的实现进行动态代理。
优点:1.8版本后 性能上比CGLIB要快。
缺点:在Spring AOP中 首先要基于接口的实现类或者本身为代理类的时候,会进行jdk的动态代理。
CGLIB动态代理:通过对被代理对象的继承方式进行创建代理类
优点:没有限制的情况下 可以直接进行代理。
缺点:本身的性能上比jdk代理低。
对于Spring AOP的动态代理的选择源码: