字节码使用Javassist在运行时重新加载类「替换 原方法输出不一样的结果」 实时加载类
Posted 九师兄
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字节码使用Javassist在运行时重新加载类「替换 原方法输出不一样的结果」 实时加载类相关的知识,希望对你有一定的参考价值。
1.概述
上一篇文章:【字节码】javassist 定义属性以及创建方法时多种入参和出参 类型的使用
转载来源于:小傅哥的字节码编程-(公众号:bugstack虫洞栈)
仅供学习。并且做了稍微修改。
通过前面两篇 javassist 的基本内容,大体介绍了;类池(ClassPool
)、类(CtClass
)、属性(CtField)、方法(CtMethod),的使用方式,并通过创建不同类型的入参出参方法,基本可以掌握如何使用这样的代码结构进行字节码编程。
那么,今天我们尝试使用 javassist 去修改一个正在执行中的类里面的方法内容。也就是在运行时重新加载类信息
可能在你平时的 CRUD 开发中并没有想到过这样的 烧操作
,但它却有很多的应用场景在使用,例如;
- 热部署常用在生产环境中,主要由于这样的系统不能频繁启停且启动耗时较长的应用。
- 另外一些组件化风控模型包,给外部使用。当模型包进行升级时并不需要外部重新部署,甚至不需要让你知道升级了。
- 再者会用于开发、调试中,可以非常有效的提升编码效率,解放码农的右手和左手。
人的大脑很难创造未知的事物,所以需要学习。
2.案例目标
以上是关于字节码使用Javassist在运行时重新加载类「替换 原方法输出不一样的结果」 实时加载类的主要内容,如果未能解决你的问题,请参考以下文章