前言
在前面的spring中,提到了aop的原理就是使用了动态代理,这篇文章就写一下jdk代理和cglib代理。
先在这里贴一下相关的需要代理的对象和接口。
首先是接口:
public interface TestDao {
void test();
}
复制代码
然后是实现类:
public class TestDaoImpl implements TestDao {
@Override
public void test() {
System.out.println("test dao impl");
}
}
复制代码
1.JdkProxy
jdk动态代理:JDK动态代理只能对实现了接口的类生成代理;
Jdk动态代理是利用了反射机制,在调用具体方法前或后,调用InvokeHandle来处理。
下面来实现一个具体的Jdk动态代理,首先写一个类实现InvokeHandle,并实现它的invoke()方法

JdkProxy的构造方法参数为一个泛型的Object,接下来就可以利用反射机制创建一个Jdk动态代理的工厂类:

接
本文介绍了Java动态代理中的JdkProxy和CglibProxy。JdkProxy利用反射机制对实现了接口的类生成代理,而CglibProxy通过生成目标类的子类来实现代理。两者在应用场景和实现方式上有所不同,Cglib能够代理未实现接口的类,但目标类不能被final修饰。
最低0.47元/天 解锁文章
1642

被折叠的 条评论
为什么被折叠?



