| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> SpringBoot实现热部署两种方式 -> 正文阅读 |
|
[Java知识库]SpringBoot实现热部署两种方式 |
前言??小宅作为一个Java程序员,在日常的工作中,经常需要修改代码,然后重启服务,在验证代码是否生效。如果是小项目还好,重启速度比较快,等待时间比较短。但是随着项目逐渐变大,并且被拆分成多个服务时,改动一些代码,可能需要重启多个服务才能生效。这样下来就耗费了大量的时间在等待服务重启。 ??这样肯定是不行的,极大的影响了我的开发效率,那么是否有方式能够实现,修改完代码之后,能够不重启项目呢?
热部署(Hot Swap)??从Java1.4起,JVM引入了HotSwap,能够在Debug的时候更新类的字节码。所以使用热部署,可以实现修改代码后,无须重启服务就可以加载修改的代码,但是它只能用来更新方法体。作为神器的IDEA自然是支持这一技术的。 配置IDEA??点击当前运行的服务,再点击 ??点击要配置的程序,找到 ??经过以上配置,在修改代码以后。只需要点击小锤子或者使用快捷键 ?? 虽然到这里已经能实现热部署的功能了。但是Java的虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作。 测试初始状态方法体修改类结构变更??由于热部署只支持修改方法体,所以类结构变更时会报错,并提示是否需要重启。 DevTools??前面虽然通过配置IDEA实现了简单的热部署,但是有很明显的缺点,只能实现方法体的修改热部署。很明显无法满足日常的需求的,所以这个时候就需要使用DevTools来替代了。 ?? DevTools是Spring为开发者提供了一个名为
触发重启?? DevTools严格意义上其实不算热部署,而是快速重启。为什么这样说呢?DevTools的实现原理是:使用两个类加载器,一个是 ??简而言之就是:通过监控类路径资源,当类路径上的文件发生更改时,自动重新启动应用程序,由于只需要重新读取被修改的类,所以要比冷启动快。 ??那么问题来了,该如何更新类路径来触发自动重启呢?其实这个取决于你使用的 IDE:
配置自动重启??这时候可能有小伙伴想问了,难道IDEA没有类似于Eclipse中保存文件自动触发重启的功能嘛。那肯定是有的,只需要进行下面两步的配置就可以实现了。
??1. 开启 ??2. 使用快捷键: 新版本如下图所示: 总结?IDEA只能实现方法体的修改热部署,无法满足日常的使用要求,所以更推荐使用DevTools。但是如果你觉得重新启动对你来说还不够快。你可以考虑使用JRebel插件。 结尾??如果觉得对你有帮助,可以多多评论,多多点赞哦,也可以到我的主页看看,说不定有你喜欢的文章,也可以随手点个关注哦,谢谢。 ??我是不一样的科技宅,每天进步一点点,体验不一样的生活。我们下期见! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:39:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |