cglib和jdk
一.jdk动态代理:
1.jdk动态代理是基于接口的,代理类和被代理类必须实现同一个接口(前提被代理类必须实现接口)
2.jdk动态代理的代理类是jdk内部实现生成的
3.jdk动态代理只会生成一个代理类文件
4.jdk动态代理的增强类是实现InvocationHandler接口
5.jdk动态代理是基于反射去调用的被代理类(被代理类对象需要传入给增强类)
6.jdk动态代理,被代理类内部调用不会再次被代理
二.cglib动态代理
1.cglib动态代理不是基于接口的,代理类会继承被代理类
2.cglib动态代理是基于asm框架来生成代理类文件的
3.cglib动态代理会生成多个代理类文件
4.cglib动态代理增强类是实现了MethodInterceptor
5.cglib调用是直接调用的,子类调用父类的方法
6.cglib动态代理是基于路由去增强调用的
7.cglib动态代理,被代理类内部调用会再次被代理


三.为什么spring service里面用cglib后,内部调用还是没有走代理呢?
因为有aop责任链 @before @after 等等,所有并没有调用proxy.invokeSuper方法
