这篇文章主要讲解了“类代理的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“类代理的方式有哪些”吧!我们先定义出一个接口和相应的实现类,方便后续使用代理类在方法中添加输出信息。「定义接口」
「实现接口」
好!接下来我们就给这个类方法使用代理加入一行额外输出的信息。点评:有代理地方几乎就会有反射,他们是一套互相配合使用的功能类。在反射中可以调用方法、获取属性、拿到注解等相关内容。这些都可以与接下来的类代理组合使用,完成各种框架中的技术场景。指数:⭐⭐场景:中间件开发、设计模式中代理模式和装饰器模式应用点评:这种JDK自带的类代理方式是非常常用的一种,也是非常简单的一种。基本会在一些中间件代码里看到例如:数据库路由组件、Redis组件等,同时我们也可以使用这样的方式应用到设计模式中。场景:Spring、AOP切面、鉴权服务、中间件开发、RPC框架等点评:CGLIB不同于JDK,它的底层使用ASM字节码框架在类中修改指令码实现代理,所以这种代理方式也就不需要像JDK那样需要接口才能代理。同时得益于字节码框架的使用,所以这种代理方式也会比使用JDK代理的方式快1.5~2.0倍。场景:全链路监控、破解工具包、CGLIB、Spring获取类元数据等点评:这种代理就是使用字节码编程的方式进行处理,免费云主机、域名它的实现方式相对复杂,而且需要了解Java虚拟机规范相关的知识。因为你的每一步代理操作,都是在操作字节码指令,例如:Opcodes.GETSTATIC、Opcodes.INVOKEVIRTUAL,除了这些还有小200个常用的指令。但这种最接近底层的方式,也是最快的方式。所以在一些使用字节码插装的全链路监控中,会非常常见。场景:AOP切面、类代理、组件、监控、日志点评:Byte Buddy也是一个字节码操作的类库,但Byte Buddy的使用方式更加简单。无需理解字节码指令,即可使用简单的 API 就能很容易操作字节码,控制类和方法。比起JDK动态代理、cglib,Byte Buddy在性能上具有一定的优势。「另外」,2015年10月,Byte Buddy被 Oracle 授予了 Duke’s Choice大奖。该奖项对Byte Buddy的“ Java技术方面的巨大创新 ”表示赞赏。场景:全链路监控、类代理、AOP点评:Javassist是一个使用非常广的字节码插装框架,几乎一大部分非入侵的全链路监控都是会选择使用这个框架。因为它不想ASM那样操作字节码导致风险,同时它的功能也非常齐全。另外,这个框架即可使用它所提供的方式直接编写插装代码,也可以使用字节码指令进行控制生成代码,所以综合来看也是一个非常不错的字节码框架。感谢各位的阅读,以上就是“类代理的方式有哪些”的内容了,经过本文的学习后,相信大家对类代理的方式有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是云技术,小编将为大家推送更多相关知识点的文章,欢迎关注!
本篇内容主要讲解“Git合并冲突怎么解决”,感兴趣的朋友免费云主机、域名不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Git合并冲突怎么解决”吧!假设我的远程存储库已被我的两个团队成员user1和user2克隆。user1 在我的…