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

IDEA配置热启动

1.背景

        开发过程中,当写完一个功能我们需要运行应用程序测试,可能这个小功能中存在多个小bug,我们需要改正后重启服务器,这无形之中拖慢了开发的速度增加了开发时间,SpringBoot提供了spring-boot-devtools,使我们在更改应用和配置文件的时候,自动重启应用!

2.热启动配置步骤

        1)添加Spring Boot DevTools依赖

        2)配置IDE:在你的集成开发环境(IDE)中,确保已启用自动构建和热交换(Hot Swap)功能。

        3)启动应用程序:运行你的Spring Boot应用程序的主类 启动应用程序。

        4)修改代码:在代码中进行更改和增加功能测试。

查看变化:当你进行代码更改后,保存文件并查看控制台或浏览器,你将看到应用程序会自动重新加载修改后的代码,并且任何更改都会在运行时生效。

2.1.工程中添加依赖

        在项目的pom.xml文件中,添加Spring Boot DevTools依赖项。这可以通过pom.xml在<dependencies>标签内添加以下行来实现:

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

2.2.spring-boot-devtools简介

  • spring-boot-devtools是一个用于开发Spring Boot应用的开发工具,它提供了很多有用的功能,帮助开发人员提高开发效率和调试能力
  • 使用spring-boot-devtools可以自动监视应用的类文件和静态资源的变化,并且在变化时自动重新启动应用,从而节省了重新编译和手动重启的时间。
  • spring-boot-devtools还提供了一个内嵌的开发者工具页面,可以用来查看应用的详细信息,如自动配置报告、加载的bean等。
  • 通过在application.properties文件中定义相应的属性,可以对spring-boot-devtools进行配置,如关闭自动重启、指定资源变化触发的延迟时间等

3.设置IDEA自动编译

        1) 快捷键Ctrl+Alt+S打开设置,在(Build, Execotion, Deployment) -> Compiler-> 勾选Build Project automatically项,重启IDEA。
![在这里插入图片描述](https://img-blog.csdnimg.cn/a69623fe3fd94ac7bc9054511be37dff.png

        2) 同时按下快捷键Ctrl + Shift + Alt + /,会弹出下面的方框,选择Registry

        3) 勾选 compiler.automake.allow.when.app running和compiler.document.save.enabled(指定是否启用保存项目响应当文档被更改),并将它们的对应的保存动作延时时间适当缩小,或者使用默认值也可以。当然,我没修改它的默认值的时候,发现项目修改的时候,它自动重新热启动的时间有点久(可缩小对应时间或者参考本文下一段解决方法)。

        4) 重启应用,当改动代码时,观察控制台输出,你会发现Spring Boot已经检测到了文件变化,并重新启动。

4.热启动与热部署的区别

        热启动是指在已经运行的项目上,再次启动(代码、配置文件修改),少加载了一些东西,从而启动的比快,节省开发时间,启动应用程序时避免完全重启的能力。
        热部署是指在应用程序正在运行时,可以进行代码、配置或资源的更改,而无需停止或重启应用程序。通过热部署,开发人员可以在不影响应用程序的正常运行的情况下,快速部署更新

        热启动主要关注的是应用程序的整体重启过程,而热部署更侧重于动态更新和替换部分组件或功能。两者都是为了减少系统停机时间和提高系统的可用性。

http://www.lryc.cn/news/143648.html

相关文章:

  • 【附安装包】Fireworks CS6安装教程
  • 深度学习-4-二维目标检测-YOLOv3理论模型
  • 通俗理解DDPM到Stable Diffusion原理
  • 如何基于自己训练的Yolov5权重,结合DeepSort实现目标跟踪
  • C#_委托详解
  • R包开发-2.2:在RStudio中使用Rcpp制作R-Package(更新于2023.8.23)
  • 基于数据湖的多流拼接方案-HUDI实操篇
  • Spring MVC 四:Context层级
  • 【C++ 学习 ⑱】- 多态(上)
  • 合宙Air724UG LuatOS-Air LVGL API控件--进度条 (Bar)
  • 图神经网络与分子表征:番外——基组选择
  • rabbitmq笔记-rabbitmq客户端开发使用
  • 13.Oracle中nvl()与nvl2()函数详解
  • 设置某行被选中并滚动到改行
  • React钩子函数之useRef的基本使用
  • 无风扇迷你电脑信息与购买指南
  • 比特币是怎么回事?
  • vue3+ts+uniapp小程序端自定义日期选择器基于内置组件picker-view + 扩展组件 Popup 实现自定义日期选择及其他选择
  • Java进阶篇--泛型
  • android framework之Applicataion启动流程分析
  • Linux Day10 ---Mybash
  • Flask-Sockets和Flask-Login联合实现websocket的登录认证功能
  • 东盟全面覆盖?长城战略部署核心区域市场,首个百万粉丝国产品牌
  • 基于PHP的电脑商城系统
  • 无客户端网络准入方案,为集成电路企业终端管理开启省事更省心模式
  • 5G与4G的RRC协议之异同
  • 横扫“盲区”、“看透”缺陷,维视智造推出短波红外相机
  • cgo踩坑:交叉编译过程出现的问题could not determine kind of name for C.XXX
  • 自然语言处理(NLP)技术的例子
  • Python“牵手”义乌购商品列表数据,关键词搜索义乌购API接口数据,义乌购API接口申请指南