美文网首页
动态代理的原理以及反射机制

动态代理的原理以及反射机制

作者: biginsect | 来源:发表于2018-06-14 15:55 被阅读26次

动态代理

代理:在某些情况下,一个对象不适合或者无法直接调用另一个对象,而代理对象可以在这两者之间起到中介的作用。也就是为其他对象提供一种代理来控制对某个对象的访问。

代理模式组成元素:1. 抽象类接口 2.被代理类(实现了抽象接口的类) 3.代理类(实际调用被代理类的方法和属性的类)

动态代理是一种方便运行时构建代理、动态处理代理方法调用的一种机制,即实现阶段不用关心代理谁,而是在运行阶段才指定代理的对象(不确定性),如果是自己写代理类就是静态代理(确定性)。

有很多场景是运用动态代理实现的,如 Spring AOP(面向切面编程)以及 RPC (Remote Procedure Call,远程过程调用——一种网络技术协议)。在编程中实现动态代理的方式有很多,在 JDK 提供的动态代理,主要是利用了反射机制。

反射机制

反射是 Java 提供的一种基础功能,它是指在运行时对任意一个类能够知道整个类的所有属性和方法,并且能够调用它的任意属性和方法(需要提供完整的 “包名+类名.class” )。

功能

  • 在运行时能够判断任意一个对象所属的类
  • 在运行时构建任意一个类的对象
  • 在运行时获取任意一个类的所有的成员变量和方法
  • 在运行时调用任意一个对象的方法和属性

通过反射机制我们可以直接操作类或者对象,甚至对其定义进行修改。注意到 Java 反射提供的 AccessibleObject 类下的 setAccessible() 方法 可以修改类成员的访问限制,(如 private 改成 public)。

Tips
反射会额外消耗一定的系统资源,若非必要,尽量少用反射。另外反射调用方法时可以忽略权限检查,可能引起安全问题。

相关文章

  • 动态代理的原理以及反射机制

    动态代理 代理:在某些情况下,一个对象不适合或者无法直接调用另一个对象,而代理对象可以在这两者之间起到中介的作用。...

  • 第6讲 | 动态代理是基于什么原理?

    谈谈 Java 反射机制,动态代理是基于什么原理? 典型回答 反射机制是 Java 语言提供的一种基础功能,赋予程...

  • Java 反射 reflection

    spring源代码,其基本原理如依赖注入、aop、以及xml技术,动态反射机制 Reflection 学习反射原理...

  • java 动态代理详解

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

  • 从头捋了一遍 Java 代理机制,收获颇丰!

    前文提到,动态代理机制使用了反射,Spring 中的 AOP 由于使用了动态代理,所以也相当于使用了反射机制。那么...

  • Java反射机制详解(二)

    本篇文章继续介绍Java反射机制,不同的是侧重于介绍动态代理。动态代理是代理模式中的一种,是通过Java反射机制来...

  • Java反射机制总结(二)

    本篇文章继续介绍Java反射机制,不同的是侧重于介绍动态代理。动态代理是代理模式中的一种,是通过Java反射机制来...

  • Java 动态代理

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

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

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

  • Spring AOP内部调用失效问题

    Spring AOP基本原理 Spring AOP是基于动态代理机制实现的,通过动态代理机制生成目标对象的代理对象...

网友评论

      本文标题:动态代理的原理以及反射机制

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