美文网首页
java 动态代理详解

java 动态代理详解

作者: Aaron_Swartz | 来源:发表于2019-03-20 00:08 被阅读0次

面试中多次遇到动态代理题目,今日小结

  • 原理区别
    1 java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。
    2 而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。

  • 作用
    我们在开发中之所以要产生一个对象的代理对象,主要用于拦截对真实业务对象的访问。那么代理对象应该具有什么方法呢?代理对象应该具有和目标对象相同的方法。

  • java 动态代理
    接口:InvokeHandler


    InvokeHandler 接口中唯一的方法
public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h) throws IllegalArgumentException

loader:  一个ClassLoader对象,定义了由哪个ClassLoader对象来对生成的代理对象进行加载
interfaces:  一个Interface对象的数组,表示的是我将要给我需要代理的对象提供一组什么接口,如果我提供了一组接口给它,那么这个代理对象就宣称实现了该接口(多态),这样我就能调用这组接口中的方法了
h:  一个InvocationHandler对象,表示的是当我这个动态代理对象在调用方法的时候,会关联到哪一个InvocationHandler对象上
动态代理主要流程

在jdk动态代理中,美中不足就是整个设计都是针对接口做的代理,如果是普通的类,我们无法通过这个方式代理对象(通过生成的代理类也知道没有接口是不行的),但是我们知道 通过拼接字节码生成新的类自由度是十分大的,这也就启示我们 设计不管是针对接口类还是普通类的代理类 是完全可行的,比如cglib框架就是通过拼接字节码来实现非接口类的代理。

参考:
1 java的动态代理机制详解
2 java动态代理原理

相关文章

  • Java 动态代理

    java的动态代理机制详解 JDK动态代理详解 Java核心技术点之动态代理

  • java反射和动态代理

    java动态代理Proxy.newProxyInstance 详解java代理机制(静态代理、动态代理)以及使用场景

  • JDK动态代理详解

    JDK动态代理详解 java动态代理类 Java动态代理类位于java.lang.reflect包下,一般主要涉及...

  • java动态代理和CGLIB动态代理

    动态代理 Java 动态代理详解[https://www.cnblogs.com/whirly/p/1015488...

  • 六大原则 动态代理

    参考 六大原则 代理模式 介绍了三种代理:静态代理、Proxy、cglib java 动态代理详解介绍了动态代理具...

  • java动态代理,python装饰器

    原文:java的动态代理机制详解 - xiaoluo501395377 - 博客园 python装饰器

  • Java Proxy和CGLIB动态代理原理

    如果觉得再简述上阅读代码太困难可以点这里:Spring中动态代理详解 动态代理在Java中有着广泛的应用,比如Sp...

  • java 动态代理详解

    动态代理使用方法 无论是jdk的还是cglib的,基本使用方法都一样.即Proxy代理类提供基础的几个方法. 1....

  • Java动态代理详解

    一,打破砂锅问到底 什么事代理模式? 什么是静态代理,有啥缺陷? 什么是动态代理? JDK动态代理是如何动态生成类...

  • java 动态代理详解

    面试中多次遇到动态代理题目,今日小结 原理区别1 java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调...

网友评论

      本文标题:java 动态代理详解

      本文链接:https://www.haomeiwen.com/subject/epaomqtx.html