当前位置: 首页 > news >正文

【开发篇】一、热部署

文章目录

  • 1、手工启动热部署
  • 2、自动启动热部署
  • 3、热部署范围配置
  • 4、关闭热部署功能

1、手工启动热部署

日常开发与调试,改几行代码想看效果就得手动点重启,很繁琐,接下来考虑启动热部署。首先引入springboot开发者工具:

<dependency>    <groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional>
</dependency>

此时若代码有变更,按Ctrl+F9构建项目操作即可实现热部署(手动)

在这里插入图片描述

关于热部署,有两个词条:

  • 重启(Restart):波及范围包括自定义开发代码,包含类、页面、配置文件等,加载位置是restart类加载器
  • 重载(ReLoad):波及范围包括各种依赖的jar包,加载位置是base类加载器

改完代码,依赖的jar包通常不变,这个是没必要每次重复加载的。所以,热部署做的是Restart,不会重新加载依赖的jar资源。(第一次启动是Reload+Restart,热部署则只管Restart)

2、自动启动热部署

上面每次点构建,和点重启其实差不多,无非是比重启启动的快(不再加载依赖的jar的原因)。

在这里插入图片描述

接下来解决这个问题,开启自动热部署。首先打开Setting里的Build project automatically设置:

在这里插入图片描述

再Ctrl+Alt+/打开Registry:

在这里插入图片描述

快捷键调不出来的就加一下快捷键:

在这里插入图片描述
此时,当IDEA工具失焦(如从IDEA切到浏览器)5秒后自动启动热部署。(坑比较多,没生效的话,可能有以下原因:)

  • 没有以debug方式启动,而是直接run
  • 打开了好多IDEA窗口

3、热部署范围配置

对于html页面等这类文件,改完后刷新浏览器就生效,不用参与热部署,即要控制热部署的范围才更合理。默认不触发重启的文件或目录有:

  • /META-INF/maven
  • /META-INF/resources
  • /resources
  • /static
  • /public
  • /templates

除了默认列表,可自定义不参与热部署重启的排除项:

devtools:  restart:   # 文件夹就后面加/**,即所有文件 exclude: public/**,static/**,config/application.yml

在这里插入图片描述

上面这个热部署仅在本地开发阶段有意义,等线上了,不可能出现服务正运行呢,代码变了的情况。(那时候可能会发生配置更新,又追求更新配置不用重启服务就生效,即热更新,后话了)

4、关闭热部署功能

方式很多,最直接的就是在配置文件改:

devtools:  restart:   exclude: public/**,static/**,config/application.ymlenable: false

但回顾之前配置文件的优先级,这里级别低:

在这里插入图片描述

容易被覆盖而不生效,因此换个优先级高的实现:

public static void main(String[] args) {//注意这里key的写法,参考properties文件System.setProperty("spring.devtools.restart.enabled", "false");SpringApplication.run(SSMPApplication.class);}
http://www.lryc.cn/news/172382.html

相关文章:

  • 点云从入门到精通技术详解100篇-定子装配过程中基于深度学习的易变形材料的点云分割(下)
  • 谷歌浏览器关闭自动更新功能
  • 电商业务--技术负责人 250K*15
  • MySQL只同步单个表或多个表,非全部同步!
  • 【论文基本功】【LaTeX】个人常用易忘LaTeX命令
  • JVM参数调优——G1收集器
  • Linux cp命令使用指南:详细教程及实际应用场景解析
  • 树结构数据在table中回显 treeselect disabled
  • BOA服务器移植
  • 洛谷刷题入门篇:顺序结构
  • LVS+Haproxy
  • Linux知识
  • Java基础(三)
  • [Firefox/快捷键] 禁用Ctrl-W快捷键
  • Git常用命令diff和mv
  • 【谢希尔 计算机网络】第3章 数据链路层
  • 《DevOps实践指南》- 读书笔记(九)
  • 数据库数据恢复-SQL SERVER数据库分区被格式化的数据恢复方案
  • ubuntu安装ffmpeg
  • CentOS上安装Docker
  • 三相PWM整流器有限集模型预测电流控制MATLAB仿真模型
  • 【JavaEE】多线程(三)
  • 9.25day5---Qt
  • wpf制作自定义控件,并触发外部路由事件
  • axios全局路由拦截的设置方法
  • XSS跨站脚本攻击
  • Java8实战-总结33
  • Postman 的使用教程(详细)
  • 单元测试 —— JUnit 5 参数化测试
  • uview组件库的安装