IDEA + Spring Boot 的三种热加载方案,看完弄懂,不用加班

背景

在日常开发中,我们需要经常修改 Java 代码,手动重启项目,查看修改后的效果。如果在项目小时,重启速度比较快,等待的时间是较短的。但是随着项目逐渐变大,重启的速度变慢,等待时间 1-2 min 是比较常见的。 这样就导致我们开发效率降低,影响我们的下班时间,哈哈哈~那么是否有方式能够实现,在我们修改完 Java 代码之后,能够不重启项目呢? 答案是有的,通过热部署的方式。并且实现的方式还是非常多,接下来就为大家一一展示

方式一:spring-boot-devtools

spring-boot-devtools 是 Spring Boot 提供的开发者工具,它会监控当前应用所在的 classpath 下的文件发生变化,进行自动重启

注意,spring-boot-devtools 并没有采用热部署的方式,而是一种较快的重启方式。其官方文档解释如下:

“FROM 《Spring Boot 2.X 中文文档 —— 开发者工具》 Spring Boot 通过使用两个类加载器来提供了重启技术。

  • 不改变的类(例如,第三方 jar)被加载到 base 类加载器中。
  • 经常处于开发状态的类被加载到 restart 类加载器中。

当应用重启时,restart类加载器将被丢弃,并重新创建一个新的。这种方式意味着应用重启比冷启动要快得多,因为省去base类加载器的处理步骤,并且可以直接使用。

在项目中,我们需要在 pom.xml 中,引入 spring-boot-devtools 依赖如下:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <!-- 可选 --> </dependency>
演示

① Run 或者 Debug 运行 Spring Boot 应用。

使用浏览器,访问 http://localhost:8081/HotSwap/01 接口,返回结果为 “No.1”。

② 修改 HotSwapController 的 #hotSwap01() 方法,设置返回值为 “No.2”。

【关键】我们现在仅仅需要修改了 Java 代码,需要重新编译下代码。点击 IDEA 的菜单 Build -> Build Project,手动进行编译 或者 快捷键编译

  • Mac:Command + F9
  • Windows:Ctrl + F9

此时,IDEA 控制台会看到 Spring Boot 重新启动的日志如下:

  • 所以 spring-boot-devtools 真的不是热部署,而是更快的重启方式。使用浏览器,再次访问 http://localhost:8081/HotSwap/01 接口,返回结果为 “No.2”,成功!

③ 可能有会觉得手动Build Project 有点麻烦,IDEA 还提供的自动编译的选项。设置方式,点击 IDEA 的菜单 IntelliJ IDEA -> Preference…,然后选择 Compiler 选项卡,将 Build project automatically 勾选上,修改完成后将焦点移出 IDEA ,触发自动编译。

“注意,Build project automatically 后面的一行提示,自动编译仅在项目不处于运行,或者处于 Debug 运行中时,才会自动生效。

所以一定要 Debug 运行 Spring Boot 项目。

方式二: IDEA 提供了 HotSwap 插件,可以实现真正的热部署。

演示

① Run 或者 Debug 运行 Spring Boot 应用。 使用浏览器,访问 http://localhost:8081/HotSwap/01 接口,返回结果为 “No.1”。

② 修改 HotSwapController 的 #hotSwap01() 方法,设置返回值为 “No.2”。

【关键】我们现在仅仅需要修改了 Java 代码,需要重新编译下代码。点击 IDEA 的菜单 Build -> Build Project,手动进行编译 或者 快捷键编译

  • Mac:Command + F9
  • Windows:Ctrl + F9

此时,我们在 IDEA 中可以看修改的类被重载的提示。如下图所示:

使用浏览器,再次访问 http://localhost:8081/HotSwap/01 接口,返回结果为 “NO.2”,成功!

③ 尝试将 Build project automatically 勾选上,希望实现自动编译,操作步骤如下图:

  • 要注意,需要焦点从 IDEA 离开。例如说,在我们修改完接口的代码之后,可能会切换到浏览器或者 Postman 对该接口进行测试,此时 IDEA 就会自动更新代码和资源,进行热部署。

现在,我们来 修改 HotSwapController 的 #hotSwap01() 方法,设置返回值为 “NO.2”。

鼠标点击电脑操作系统任务栏,以达到 IDEA 失去焦点的效果。我们在 IDEA 中可以看修改的类被重载的提示。如下图所示:

使用浏览器,再次访问 http://localhost:8081/HotSwap/01 接口,返回结果为 “No.2”,成功!

方式三:Jrebel

插件市场搜索安装 Jrebel。然后试用 OR 想办法激活。

使用时 采用 jrebel 启动,而不是 idea 原生启动,这个时候修改了文件内容,就会触发热部署。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1125428.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

彼得林奇的“成长型价值股“定义

彼得林奇的“成长型价值股”定义 关键词:彼得林奇、成长型价值股、股票投资、价值分析、成长潜力 摘要:本文深入探讨了彼得林奇所提出的“成长型价值股”定义。通过对其背景的介绍,详细阐述了成长型价值股的核心概念、核心算法原理、数学模型等内容。结合实际案例,分析了如…

【课程设计/毕业设计】基于python深度学习训练鲜花识别基于python训练鲜花识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

authfwcfg.dll文件丢失找不到 打不开问题 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

python_flask求职招聘岗位信息分析系统的设计与实现_xz0yin70可视化大屏

目录摘要项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理摘要 Python Flask求职招聘岗位信息分析系统基于Flask框架开发&#xff0c;整合了数据爬取、清洗、存储、分析及可视化功能&#xff0c;旨在为求职者、招聘方及人力资源管理者提供数据驱动…

AuthFWGP.dll文件丢失找不到 打不开问题 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

深度学习毕设选题推荐:基于人工智能的玉米粒品质检测基于深度学习的玉米粒品质检测

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

学长亲荐10个一键生成论文工具,专科生轻松搞定毕业论文!

学长亲荐10个一键生成论文工具&#xff0c;专科生轻松搞定毕业论文&#xff01; 论文写作的救星&#xff0c;AI 工具正在改变你的学习方式 在专科生的毕业论文写作过程中&#xff0c;常常会遇到选题困难、资料搜集繁杂、逻辑梳理不清等问题。而随着 AI 技术的不断成熟&#xff…

AuxiliaryDisplayApi.dll文件丢失找不到 打不开问题 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

大模型面试题48:从白话到进阶详解LoRA 中 r 和 alpha 参数

这两个参数是 LoRA 最核心的超参数&#xff0c;r 决定了 LoRA 的「信息容量上限」&#xff0c;alpha 决定了 LoRA 的「更新强度」&#xff0c;两者配合才能让 LoRA 既轻量化又有好效果。 一、白话入门&#xff1a;用「水杯倒水」理解两个参数 我们继续沿用之前的「汽车改装」比…

python_flask汽车销售推荐交流系统小程序_61iro583

目录系统概述核心功能技术实现应用价值项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理系统概述 Python Flask汽车销售推荐交流系统小程序是一款基于Flask框架开发的轻量级Web应用&#xff0c;旨在为用户提供汽车销售信息推荐和在线交流平台。系统…

AuxiliaryDisplayCpl.dll文件丢失找不到 打不开问题 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

云平台一键部署【FunAudioLLM/Fun-ASR-Nano】音乐背景下歌词识别

Fun-ASR 是通义实验室推出的端到端语音识别大模型&#xff0c;是基于数千万小时真实语音数据训练而成&#xff0c;具备强大的上下文理解能力与行业适应性&#xff0c;支持低延迟实时听写&#xff0c; 并且覆盖 31 个语种。 在教育、金融等垂直领域表现出色&#xff0c;能准确识…

告别GPT-4o付费焦虑,Moonshot视觉模型带你飞!

一、引言 在当今数字化时代,图文分析与报告生成的需求日益增长,无论是在商业领域进行数据可视化分析,还是在科研领域处理实验图像数据,又或是在教育领域制作教学资料,都离不开高效准确的图文分析与报告生成工具。GPT-4o 凭借其强大的多模态能力,在图文分析与报告生成方面…

基于STM32的智能鞋柜设计

基于STM32的智能鞋柜设计摘要随着人们生活水平的不断提高&#xff0c;对个人卫生和健康的要求也日益增强。鞋柜作为家庭日常生活中不可或缺的家具&#xff0c;其功能已从简单的储物空间逐渐向智能化、健康化方向发展。传统的鞋柜仅提供基本的收纳功能&#xff0c;无法有效解决鞋…

azroleui.dll文件丢失找不到问题 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

JavaWeb项目打包、部署至Tomcat并启动的全程指南(图文详解)

前言我们想要部署一个javaWeb项目到tomcat上&#xff0c;需要了解一些概念什么是tomcat&#xff1f;Tomcat 是 Apache 软件基金会&#xff08;Apache Software Foundation&#xff09;下的一个开源项目&#xff0c;主要用于实现 Java Servlet、JavaServer Pages&#xff08;JSP…

Pelco KBD300A 模拟器:07+2.Python 专题:线程安全与信号槽机制——项目多线程最佳实践

第72篇 &#x1f9f5; Python 专题&#xff1a;线程安全与信号槽机制——项目多线程最佳实践 ✨ 引言 在上篇《7. 宏脚本编辑器设计与解释器实现》中&#xff0c;我们构建了宏系统的完整链路&#xff0c;从语法解析到线程化执行&#xff0c;实现了自动化巡航和联动功能。然而&…

深度测评!9款AI论文工具测评:本科生毕业论文全攻略

深度测评&#xff01;9款AI论文工具测评&#xff1a;本科生毕业论文全攻略 2026年AI论文工具测评&#xff1a;为什么你需要这份指南&#xff1f; 随着人工智能技术的不断进步&#xff0c;越来越多的本科生开始依赖AI论文工具来提升写作效率、优化内容结构以及规范格式。然而&am…

Docker启动安装nacos(详情讲解,全网最细)

前言 安装之前你需要准备一个mysql&#xff0c;当前安装方式是将数据持久化到数据库中的&#xff0c;这里的部署是单机模式 1、Docker 拉取镜像 docker pull nacos/nacos-serverPS&#xff1a;这是拉取最新的nacos版本&#xff0c;如果需要拉取别的版本可以加&#xff1a;版…

batmeter.dll文件丢失找不到 打不开问题 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…