深入Java动态代理源码

我不是女神ヾ 2023-09-24 21:24 171阅读 0赞

背景介绍

什么是动态代理? 动态代理,本质上还是代理模式,只不过代理类是在JDK内部产生并创建实例(字节码编辑)。 再者其内部还维护了一个基于弱引用的缓存结构。总结来说:动态代理 = 代理模式 + 字节码编辑 + 弱引用缓存。

我们来探究一下这个过程。

原理探究

示例代码:

  1. public class TestProxy {
  2. interface Hello {
  3. void hello();
  4. }
  5. private static class HelloImpl implements Hello {
  6. @Override
  7. public void hello() {
  8. System.out.println("hello");
  9. }
  10. }
  11. public static void main(String[] args) {
  12. Hello hello = new HelloImpl();
  13. Class<? extends Hello> clazz = hello.getClass();
  14. Hello proxy = (Hello)Proxy.newProxyInstance(clazz.getClassLoader(),
  15. clazz.getInterfaces(), new InvocationHandler() {
  16. @Override
  17. public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
  18. //
  19. String n

发表评论

表情:
评论列表 (有 0 条评论,171人围观)

还没有评论,来说两句吧...

相关阅读

    相关 深入Java动态代理

    背景介绍 什么是动态代理? 动态代理,本质上还是代理模式,只不过代理类是在JDK内部产生并创建实例(字节码编辑)。 再者其内部还维护了一个基于弱引用的缓存结构。总结来说: