美文网首页
反射与动态代理

反射与动态代理

作者: 原创迷恋者 | 来源:发表于2019-08-18 09:53 被阅读0次

反射
Java 反射机制在程序运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。这种 动态的获取信息 以及 动态调用对象的方法 的功能称为 java 的反射机制。

反射机制很重要的一点就是“运行时”,其使得我们可以在程序运行时加载、探索以及使用编译期间完全未知的 .class 文件。换句话说,Java 程序可以加载一个运行时才得知名称的 .class 文件,然后获悉其完整构造,并生成其对象实体、或对其 fields(变量)设值、或调用其 methods(方法)。

反射让静态语言具有了动态语言的部分能力。静态语言与动态语言的简单区分方法是:语言的类型信息,在运行时检查、还是在编译期检查。

反射机制是Java语言提供的一种基础功能,赋予程序在运行时自省(Introspect)的能力。通过运行时操作元数据或对象,Java可以灵活地操作运行时才能确定的信息。

动态代理
动态代理是一种在运行时能构建动态代理、动态处理的机制,保留包装RPC调用、面向切面的编程(AOP)。很多繁琐的重复编程,都可以被动态代理机制优雅解决。

动态代理首先是一个代理机制,像是设计模式中的代理模式,代理可以看作是对调用目标的一个包装。我们对目标代码的调用不是直接发生的,而是通过代理完成。

通过代理可以让调用者和实现者之间解耦,比如RPC调用、框架内部寻址、序列化、反序列化等。对调用者往往没有太大意义的操作,可以通过代理,提供更友善的界面。

实现动态代理的方式很多,比如JDK自身提供的动态代理,利用了反射的机制;保留利用字节码操作机制,比如ASM、cglib、Javassist等。

动态代理完美符合切面编程。

AOP
AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。

AOP可以被看作是OOP的一个补充。因为OOP对于跨越不同对象或类的分散、纠缠逻辑表现能力不够。

AOP可以通过动态代理的机制,让开发者从这些繁琐事项中抽身出来,大幅度提高了代码的抽象程度和复用度。

Spring AOP支持两种模式的动态代理,JDK Proxy或cglib。cglib动态代理采用的是创建目标类子类的方式,而不是使用接口。

相关文章

  • 类加载和反射

    反射 动态代理

  • 动态代理

    Jdk 动态代理 Jdk动态代理,利用反射,实现 InvocationHandler 接口。Jdk 动态代理需要实...

  • 反射与动态代理

    java中反射与动态代理是java程序员不可忽略的一门功课,关于其概念、基本使用方式,网上一大堆,本文主要讲解本人...

  • 反射与动态代理

    反射Java 反射机制在程序运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用...

  • Java基础:反射

    反射注解动态代理相关阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 ...

  • 安卓反射和动态代理的应用

    提纲 java反射基础 反射在Android中的应用 Java动态代理 动态代理在Android的应用 java反...

  • retrofir

    注解 + 动态代理+反射+ okhttp

  • Java 代理

    静态代理 动态代理 动态代理, 日志切片使用反射获得方法 动态代理, 自定义注解(对注解的方法,使用动态代理添加切...

  • Java 动态代理

    前言 关于动态代理 JDK动态代理 CGLIB动态代理 区别 java动态代理是利用反射机制生成一个实现代理接口的...

  • java面试宝典 五分钟了解spring代理 @Transact

    spring代理分为jdk动态代理和cglib代理 jdk动态代理 jdk动态代理是利用反射机制生成一个实现代理接...

网友评论

      本文标题:反射与动态代理

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