为什么要使用ClassLoader? ClassLoader有什么好处?

刚接触ClassLoader,今天在巩固概念的自我问答博弈中突然顿悟使用ClassLoader的好处,现就此记录下

对于像我这样刚接触概念的初学者,看到如下可能没啥感觉,都知道是如此

ClassLoader顾名思义,可以在程序运行的时候动态加载class文件,并在内存中生成对应的Class

但是自我博弈时改了下,变成如下

ClassLoader顾名思义,可以在服务器运行的时候动态加载class文件,并在内存中生成对应的Class

突然醍醐灌顶,服务器运行时动态加载... 嘶(吸气声),那不就意味着我可以不停机地动态加载新的业务类吗?新的业务需求一出来,想把功能快速部署,但面对一堆用户仍在开心地使用自己的服务,又不忍心重启服务器编译,这时ClassLoader不就派上用场了吗?我把写好的新业务java类编译好,通过文件方式放到服务器业务相关目录下,服务端暴露一个内部接口给客户端(比如暴露一个Controller的request匹配给前端),我一调用接口,服务端就使用ClassLoader动态加载新业务class文件到内存,在内存端得到Class对象后就可以把对应的实例切到spring环境中,岂不美哉?

对于自己来说,原先写的个人jar包里的filter模块,通过一个FilterManager管理各式各样的filter,再用一个循环统一调用,实现filter之间的解耦和,为了进一步解耦和,每个filter都会有一系列FilterHandle进行具体功能的组合(相当于一个技能有不同效果,不同效果之间可以组合)以实现进一步解耦和,至此,添加任何一个有关filter的新需求我都不需要改动任何代码,所以是非常之适合ClassLoader的动态加载新业务,至此,ClassLoader就可以大放异彩了。

事实上,这便是ClassLoader一个重要作用:热部署

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值