美文网首页
代码热部署之jarslink分析

代码热部署之jarslink分析

作者: nhhnhh | 来源:发表于2019-06-23 21:41 被阅读0次

什么是jarslink

jarslink是阿里的开源框架,可以用来使模块分离,对不同的模块的代码进行部署不会影响其他模块的代码的运行。可以避免各个模块依赖的包的冲突。他的代码比较简单并且清晰明了,我们可以学习他们的代码,然后稍作修改,就能运用到我们自己的项目中。

源码分析

首先,我们可以看到jarslink的代码并不多,并且有很多测试类,我们就从测试类入手,看看他的运行步骤


图片.png

可以分析一下下图这个测试类。他的大概逻辑就是组装一个ModuleConfig的对象,然后根据这个对象load出Module这个对象,Module就是当前模块的所有代码,然后从该模块里看是否有对应的action。那么重点就是 moduleLoader.load(config)这段代码了。


图片.png
这段代码的主要逻辑就是获取该模块对应的jar的文件路径,然后组装成sping的容器,再返回一个SpringModule对象。可以看到该对象有自己的上下文信息,还有对应的actions
图片.png
图片.png
图片.png

我们来看一下组装spring容器的代码,代码的逻辑就是new出来当前模块的classloader,然后切换当前线程的classloader,然后根据是注解还是xml方式,加载spring的上下文信息,并且设置一下父容器的信息,使得在当前模块中可以获取父容器的bean等信息。然后设置一下容器的classloader,刷新容器内容即可。


图片.png

正因为各自的模块有各自的上下文信息,自己的classloader,所以使得模块间互相隔离,各自不会互相影响。jarslink的代码量很少,上述讲到的几个类与方法就是核心。如果我们需要有自己的定制化需求,完全可以依据他的逻辑,重写一份自己的代码热部署功能。

相关文章

  • 代码热部署之jarslink分析

    什么是jarslink jarslink是阿里的开源框架,可以用来使模块分离,对不同的模块的代码进行部署不会影响其...

  • Spring Boot部署

    热部署 pom.xml文件中添加spring-boot-devtools依赖即可实现页面和代码的热部署。 常规部署...

  • Tomcat之热部署和热加载源码分析

    热部署和热加载类似,都是在不重启Tomcat情况下,使最新代码生效。 热部署与热加载的区别: 热部署表示重新部署应...

  • 【程序控】SpringBoot热部署

    spring boot热部署 1、配置热部署环境,主要是在pom.xml配置文件里面加入以下代码: 添加以上代码以...

  • android 热修复 & 插件化学习

    什么是热部署? 热部署指在App运行时,加载外部的代码或者资源,实现对自身代码或者资源的覆盖、替换,在避免重新安装...

  • 热部署的使用

    热部署主要用于在开发时,可以不重新启动而升级代码. 首先 配置完成后,重新启动项目可以试着修改代码,热部署成功,也...

  • idea 个人常用插件总结

    包含idea美化 、代码的检验、热部署、Json 转换 、翻译等

  • IEDA实现java热部署

    热部署: 接触java不久,用最简单的话来说的话就是:修改代码且不需要重启就能有效实现热部署步骤:1,下载spri...

  • Spring Boot实现热部署

    在Spring Boot实现代码热部署是一件很简单的事情,代码的修改可以自动部署并重新热启动项目。 引用devto...

  • Spring Boot实现热部署

    在Spring Boot实现代码热部署是一件很简单的事情,代码的修改可以自动部署并重新热启动项目。 这样,当修改一...

网友评论

      本文标题:代码热部署之jarslink分析

      本文链接:https://www.haomeiwen.com/subject/tpiwqctx.html