`
hbxflihua
  • 浏览: 661267 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

反射机制和动态代理的原理

    博客分类:
  • java
阅读更多

反射机制是Java语言提供的一种基础功能,赋予程序在运行时(注意:不是编译时)自省(introspect)的能力。通过反射我们可用直接操作类或者对象,比如获取某个对象类的定义,获取类声明的属性和方法,调用对象的方法或者构造对象,甚至可以在运行时修改类的定义。

 

反射会额外消耗一定的系统资源,还可以忽略权限检查,可能会破坏系统封装性产生安全问题。

 

动态代理是一种方便运行时动态构建代理、动态处理代理方法调用的机制,很多场景都是利用类似机制做到的,比如包装RPC调用、面向切面编程(AOP)等。

 

实现动态代理的方式很多,比如JDK自身提供的动态代理,它是利用Java自带的反射机制来实现的。还有其他实现方式,比如利用更高性能的字节码操作机制,ASMcglib(基于ASM)、Javassist等 。

 

JDK动态代理的优势:

1、最小化依赖关系,减少依赖意味着简化开发和维护,JDK本身的支持可能比cglib更可靠。

2、平滑升级JDK

3、代码实现简单

 

cglib的优势:

1、侵入性低,直接对实现类进行代理,无需依赖接口。

2、高性能

 

动态代理的应用非常广泛,虽然最初多是因为RPC等的使用进入我们的视线,但是动态代理的应用场景远不如此,它符合AOP等切面编程。可以看做是对OOP的补充,因为OOP对于跨越不同对象或类的分散、纠缠逻辑表现力不够,比如在不同模块的特定阶段做一些事情,类似日志、用户鉴权、异常处理、性能监控、事务处理、资源释放等等。

 

AOP通过动态代理机制可以让开发者从这些琐碎的事情从抽身出来,大幅度提高了代码的抽象程度和复用度。从逻辑上来说,我们在软件设计和实现中的类似代理,如FacadeObserver等很多设计目的,都可以通过动态代理优雅地实现。

分享到:
评论

相关推荐

    java反射机制和动态代理的原理

    java反射机制和动态代理的原理,熟悉反射机制和动态代理

    Java反射机制和动态代理

    主要讲述Java反射机制与设计模式之一:代理模式的原理与应用;同时详细讲述了Java对代理模式的支持以及Java中动态代理的原理,应用与实践。

    JAVA的反射机制与动态代理.pdf

    JAVA的反射机制与动态代理的工作原理和介绍

    JAVA反射机制和动态代理PDF

    简单易懂的例子,让你瞬间明白反射和代理的原理

    JAVA反射机制与动态代理综合资料

    JAVA反射机制与动态代理综合里面自带了23个类的例子,用代码详细地解说了JAVA反射机制与动态代理原理,此资料对走java这条线的朋友有极大的帮助....

    反射实现 AOP 动态代理模式(Spring AOP 的实现原理)

    AOP的意思就是面向切面编程。本文主要是通过梳理JDK中自带的反射机制,实现 AOP动态代理模式,这也是Spring AOP 的实现原理

    Java反射机制的工作原理详解.docx

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

    代理机制及AOP原理实现

    spring中动态代理机制的实现原理及AOP实现原理,JDK的反射,cglib类。

    JDK动态代理(AOP)使用及原理分析视频教程课件

    动态代理是使用jdk的反射机制,创建对象的能力, 创建的是代理类的对象。 而不用你创建类文件。不用写java文件。 动态:在程序执行时,调用jdk提供的方法才能创建代理类的对象。jdk动态代理,必须有接口,目标类必须...

    JAVA反身机制与动态代理(附源码).rar

    主要讲述Java反射机制与设计模式之一:代理模式的原理与应用同时详细讲述了Java对代理模式的支持以及Java中动态代理的原理,应用与实践 本课程要求大家对Java泛型知识有所了解,因为程序代码中大量使用了泛型相关...

    利用Java的反射与代理实现IOC模式

    利用Java的反射与代理实现IOC模式 在Java中,其反射和动态代理机制极其强大,我们可以通过其反 射机制在运行时获取信息。...在本文中,主要讲述的是用Java的反射机制实现IOC。下 面,让我们开始IOC之旅吧!

    SpringAOP的实现机制(底层原理)、应用场景等详解,模拟过程的实例

    您将了解如何使用Java的反射机制来创建代理对象,以及如何将横切逻辑注入到目标方法中。我们还提供了实际示例,演示如何在Spring AOP中使用JDK动态代理。 CGLib动态代理: 我们将深入研究CGLib动态代理,它允许您在...

    java 反射机制 详细讲解

    关于反射机制的原理什么的很详尽,经验总结精华奉献

    Java反射机制 深入浅出

    1、到底什么叫反射 2、Class类的作用 3、Class类的实例化三种...Class类在一般的基本开发是不会有任何作用的,完全可以不会,但是,对于一些高端的开发框架,所有的基本的核心原理都在于反射机制的应用上。 8、代理模式

    Java动态代理简单应用

    概念  代理模式是基本的设计模式之一,它是开发者为了提供额外的或...  Java动态代理实现机制采用了反射的思想,有关于反射的基础知识,可以参见博客Java发射机制浅析。  原理  Spring核心AOP实现技术之一是采用

    Java动态代理

    本课程主要讲述Java反射机制与设计模式之一:代理模式的原理与应用 同时详细讲述了Java对代理模式的支持以及Java中动态代理的原理,应用与实践 本课程要求大家对Java泛型知识有所了解,因为程序代码中大量使用了泛型...

    免费超全面的Java基础类型,容器,并发,IO流,面向对象,Web编程等代码总结

    Proxy动态代理机制详解 从整体上观察对象 网络开发 Servlet基础,生命周期执行过程 Http请求详解,握手挥手流程简介 会话跟踪技术,Session和Cookie详解 过滤器、监听器、拦截器,应用详解 Servlet 集成 C3P0

    JavaEE技术问题汇总.docx

    讲一讲反射,主要是概念,都在哪需要反射机制 JSP中有个概念,静态包含和动态包含? Strust2和Springmvc的对比? SpringMvc的核心组件和运行流程 SpringMvc常用的注解 Shiro核心组件 Shiro的运行流程 ...

    JAVA中级书籍

    反射机制;多线程;IO/NIO; 网络编程;常用数据结构和相关算法。 2、对面向对象的软件开发思想有清晰的认识、熟悉掌握常用的设计模式;设计模式;单例模式;工厂模式;代理模式;模板方法模式;责任链模式等。 3...

Global site tag (gtag.js) - Google Analytics