spring-IOC底层机制

JDK与CGLIB的动态代理

 

JDK动态代理

 

创建代理的方法
将需要代理的类传入代理类中(通过构造方法)
在代理方法中创建代理实例(需要一个接口和一个实现接口的类):

Proxy.newProxyInstance(类的加载器(类.getClass().getClassLoader()),实现的接口(类.getClass.getInterfaces()),接口的实例化对象(this或者通过匿名类new的对象));

This关键字?代指当前对象------------通过this需要代理类实现InvocationHandler接口

重写invoke()方法

 

调用增强后的对象

 

 

CGLIB的动态代理

 

Jdk动态代理需要实现接口,CGLIB则是为一个类创建子类不需要接口

引入CGLIBjar包或者spring的依赖包
创建代理的方法
将需要代理的类传入代理类中(通过构造方法)
在代理方法中创建代理实例

代理类实现MethodInterceptor接口

 

实现intercept方法

 

总结

 

 

posted @ 2018-05-22 03:01  floatthy  阅读(158)  评论(0编辑  收藏  举报