spring-IOC底层机制
JDK与CGLIB的动态代理
JDK动态代理
创建代理的方法
将需要代理的类传入代理类中(通过构造方法)
在代理方法中创建代理实例(需要一个接口和一个实现接口的类):
Proxy.newProxyInstance(类的加载器(类.getClass().getClassLoader()),实现的接口(类.getClass.getInterfaces()),接口的实例化对象(this或者通过匿名类new的对象));
This关键字?代指当前对象------------通过this需要代理类实现InvocationHandler接口
重写invoke()方法
调用增强后的对象
CGLIB的动态代理
Jdk动态代理需要实现接口,CGLIB则是为一个类创建子类不需要接口
引入CGLIBjar包或者spring的依赖包
创建代理的方法
将需要代理的类传入代理类中(通过构造方法)
在代理方法中创建代理实例
代理类实现MethodInterceptor接口
实现intercept方法
总结