Idea集成SpringBoot实现两种热部署方式(亲测有效)
即将介绍的两种热部署方式:
1.SpringLoaded
2.DevTools
区别:
SpringLoader:SpringLoader 在部署项目时使用的是热部署的方式。
DevTools:DevTools 在部署项目时使用的是重新部署的方式
SpringBoot版本:2.1.9-RELEASE
IDEA版本:2019.2.4
热部署
大家都知道在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改动效果,往往需要重启应用查看改变效果,其实就是重新编译生成了新的Class文件,这个文件里记录着和代码等对应的各种信息,然后Class文件将被虚拟机的ClassLoader加载。
而热部署正是利用了这个特点,它监听到如果有Class文件改动了,就会创建一个新的ClaassLoader进行加载该文件,经过一系列的过程,最终将结果呈现在我们眼前。
类加载机制
Java中的类经过编译器可以把代码编译为存储字节码的Class文件,该Class文件存储了各种信息,最终要加载到虚拟机中运行使用。
虚拟机把描述类的数据从Class文件加载到内存中,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。
SpringLoaded 实现热部署方式:
缺陷:不会加载静态资源,只加载类文件,也就是只热部署加载class
1.到mvn仓库下载jar包
下载后记住这个jar包的绝对路径。接下来会用到
2.配置SpringBoot的启动参数配置
在VMOptions里面添加 -javaagent:jar包路径 -noverify
3.以Debug模式进行启动,再更改代码后会自动更新classes文件,至此完成。
DevTools实现热部署方式(自重启)
在激活了开发者工具后,ClassPath里对文件做任何修改都会触发应用程序重启。为了让重启的速度够快,不会修改的类(第三方JAR包)都加载到了基础类加载器里,而应用程序的代码则会加载到一个单独的重启类加载器里。检测到变更时,只会重启类加载 器重启。
有些ClassPath里的资源变更后不需要重启应用程序。像Thymeleaf这样的视图模板可以直接编辑,不用重启。在/static 或 /public里的静态资源也不用重启应用程序,所以Spring Boot开发者工具在重启时排除掉了如下目录:/META-INF/resources、/resources、/static、/public、/templates。
一、pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<!-- optional目的是为了继承他的项目不继承这个devtools插件 -->
</dependency><build>
<plugins>
<plugin>
<!--热部署配置-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--fork:如果没有该项配置,整个devtools不会起作用(根据个人情况而定,最好加上)-->
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>二、勾选Build project automatically(自动构建)
三、IDEA 设置为在程序运行过程中,依然允许自动编译
步骤: ctrl + shift + alt + /,选择Registry,勾选勾上 Compiler autoMake allow when app running
勾选目标的位置自己找找,排列顺序不一样,勾选后记得重启生效!
四、设置自动加载资源配置和编译
就此全部完成,有什么问题欢迎随时留言,远程协助~

Idea集成SpringBoot实现两种热部署方式(亲测有效)的更多相关文章
- SpringBoot入门-2(两种热部署方式)
在编写代码的时候,你会发现我们只是简单把打印信息改变了,就需要重新部署,如果是这样的编码方式,那么我们估计一天下来就真的是打几个Hello World就下班了.那么如何解决热部署的问题呢?那就是spr ...
- Tomcat下载安装并部署到IDEA(附带idea两种热部署设置方法)
目录 Tomcat下载教程 Tomcat安装教程 Tomcat热部署到IDEA idea两种热部署设置方法 使用Idea的时候,修改了代码,需要反复的重启Tomcat,查看效果,是不是贼烦?还记得刚上 ...
- Spring Boot 五种热部署方式
[推荐]2019 Java 开发者跳槽指南.pdf(吐血整理)>>> 1.模板热部署 在SpringBoot中,模板引擎的页面默认是开启缓存的,如果修改了页面的内容,则刷新页面是得不 ...
- Spring Boot 五种热部署方式,极速开发就是生产力!
1.模板热部署 在 Spring Boot 中,模板引擎的页面默认是开启缓存的,如果修改了页面的内容,则刷新页面是得不到修改后的页面的,因此我们可以在application.properties中关闭 ...
- 详细讲解 Redis 的两种安装部署方式
Redis 是一款比较常用的 NoSQL 数据库,我们通常使用 Redis 来做缓存,这是一篇关于 Redis 安装的文章,所以不会涉及到 Redis 的高级特性和使用场景,Redis 能够兼容绝大部 ...
- Jenkins持续集成企业实战系列之两种网站部署的流程-----01
注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. 最初接触Jenkins也是由于公司需求,根据公司需求Java代码项目升级的.(公司是 ...
- SpringBoot开发 - 什么是热部署和热加载?devtool的原理是什么?
在SpringBoot开发调试中,如果我每行代码的修改都需要重启启动再调试,可能比较费时间:SpringBoot团队针对此问题提供了spring-boot-devtools(简称devtools)插件 ...
- SpringBoot笔记十七:热部署
目录 什么是热部署 Devtools热部署 什么是热部署 热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用. 举个例子,王者荣耀的更新有时候就是热部署,热更新,就是他提示你更新,更新40 ...
- 引入springboot的两种方式以及springboot容器的引入
一.在项目中引入springboot有两种方式: 1.引入spring-boot-starter-parent 要覆盖parent自带的jar的版本号有两种方式: (1)在pom中重新引入这个jar, ...
随机推荐
- Web安全之URL跳转科普
跳转无非是传递过来的参数未过滤或者过滤不严,然后直接带入到跳转函数里去执行. 0x01 JS js方式的页面跳转1.window.location.href方式 <script language ...
- JS循环+循环嵌套+经典例题+图形题
首先,了解一下循环嵌套的特点:外层循环转一次,内层循环转一圈. 在上一篇随笔中详细介绍了JS中的分支结构和循环结构,我们来简单的回顾一下For循环结构: 1.for循环有三个表达式,分别为: ①定义循 ...
- 怎样快速找到某一行代码的git提交记录
利用notepad++提高问题分析效率,以及快速找到某一行代码的git提交记录 1. 全目录搜索/替换 Notepad++是一款强大的文本编辑工具,当知道大概的关键词但不知道在哪个日志时可以使用not ...
- 3M隔音耳罩拆分、清洗教程
简介 3M隔音耳罩用起来真爽,十分适合喜欢安静的人.再者,被动和别人同住(学校.厂里宿舍.公司宿舍).公共场合时使用,效果刚刚的.题外话:有些人的素质……%¥%(*¥*! 3M隔音耳罩平时戴着也没觉得 ...
- LeetCode初级算法--设计问题02:最小栈
LeetCode初级算法--设计问题02:最小栈 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net ...
- Tomcat原理与优化随笔
1. 基础组件: Server, Service: Connector(http, https, ajp用于Apache反向代理), Engine Engine: Realm用于安全配置等,如User ...
- 仿写vue UI 组件总结 (自己练习,仿照现有的UI组件)
UI组件 Vue开发插件流程 本来是昨天要写总结的,感觉自己写不好,就放弃了.今天看到了iview和element有一些摩擦,是关于代码借鉴的问题(哈哈),不做评价.谁下生会写组件,我仿(chao)写 ...
- ReoGrid.Mvvm:ReoGrid绑定模型
ReoGrid 是 C# 编写的.NET 电子表格控件(类似 Excel).支持单元格合并,边框样式,图案背景颜色,数据格式,冻结,公式,宏和脚本执行,表格事件等.支持 Winform\WPF. Re ...
- Nginx在Window上简单的使用
先上Nginx在Window上的基本常用指令: IP_hase也可以解决Session共享的问题:不过不推荐这样使用,建议使用 Memcache/redis来处理 session共享的问题 轮询还是权 ...
- Spring Cloud gateway 网关服务 一
之前我们介绍了 zuul网关服务,今天聊聊spring cloud gateway 作为spring cloud的亲儿子网关服务.很多的想法都是参照zuul,为了考虑zuul 迁移到gateway 提 ...







