前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >动态代理是基于什么原理?

动态代理是基于什么原理?

作者头像
葆宁
发布2019-04-18 15:33:11
8570
发布2019-04-18 15:33:11
举报
文章被收录于专栏:FREE SOLOFREE SOLO

反射

反射最大的作用之一就在于我们可以不在编译时知道某个对象的类型,而在运行时通过提供完整的”包名+类名.class”得到。 注意:不是在编译时,而是在运行时。代理模式(通过代理静默地解决一些业务无关的问题,比如远程、安全、事务、日志、资源、关闭……让应用开发者可以只关心他的业务)

静态代理:事先写好代理类,可以手工编写,也可以用工具生成。缺点是每个业务类都要 对应一个代理类,非常不灵活。 动态代理:运行时自动生成代理对象。缺点是生成代理代理对象和调用代理方法都要额外 花费时间。

JDK动态代理:基于Java反射机制实现,必须要实现了接口的业务类才能用这种办法生 成代理对象。新版本也开始结合ASM机制。

CGLIB动态代理:基于ASM机制实现,通过生成业务类的子类作为代理类。不能应用到被代理对象的final方法上。

功能:

代码语言:javascript
复制
•在运行时能判断任意一个对象所属的类。
•在运行时能构造任意一个类的对象。
•在运行时判断任意一个类所具有的成员变量和方法。
•在运行时调用任意一个对象的方法。

说大白话就是,利用Java反射机制我们可以加载一个运行时才得知名称的class,获悉其构造方法,并生成其对象实体,能对其fields设值并唤起其methods。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年04月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 反射
  • 功能:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档