SpringBoot 热部署

文章目录

前言

在日常开发中,我们需要经常修改 Java 代码,手动重启项目,查看修改后的效果。如果项目还比较小,重启速度比较快,等待的时间是较短的。但是随着项目逐渐变大,重启的速度变慢,等待时间越来越长,我们的效率就很低下。Spring Framework 提供了热部署(Hot Reload)功能,允许在开发过程中无需重启应用程序就能实时地修改代码并看到更改效果。这对于提高开发效率非常有帮助。以下是常见的几种热部署方式:

一、spring-boot-devtools

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

添加热部署框架支持

在pom.xml中添加如下框架引用

xml 复制代码
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>

settings 开启项目自动编译

开启运行中热部署

使用Debug启动

二、IDEA 自带 HowSwap 功能

该功能是 IDEA Ultimate 旗舰版的专属功能,不支持 IDEA Community 社区版。

设置 Spring Boot 启动类


等待项目启动完成

点击热加载按钮

每次修改 Java 代码后,点击左下角的「热加载」按钮,即可实现代码热加载

存在的问题

IDEA 自带 HowSwap 功能,支持比较有限,很多修改都不支持。

  • 只能增加方法或字段但不可以减少方法或字段
  • 只能增加可见性不能减少
  • 只能维持已有方法的签名而不能修改等等。

三、JRebel 插件【推荐】

JRebel 插件是目前最好用的热加载插件,它支持 IDEA Ultimate 旗舰版、Community 社区版

安装插件

  1. 点击JRebel插件地址,下载2022.4.1版本
  2. 打开 Preference -\> Plugins 菜单,点击「Install Plugin from Disk...」按钮,选择刚下载的 JRebel 插件的压缩包,安装完成后,需要重启 IDEA 生效。
  3. 打开 Preference -\> JRebel \& XRebel 菜单,输入 GUID address 为 https://jrebel.qekang.com/1e67ec1b-122f-4708-87d0-c1995dc0cdaa,邮件随便写,完成 JRebel 的激活。
  4. 点击「Work Offline」按钮,设置 JRebel 为离线,避免因为网络问题导致激活失效。

使用插件

点击「Debug With JRebel」按钮,使用 JRebel 启动项目。

每次修改 Java 代码后,点击左下角的「热加载」按钮,即可实现代码热加载

相关推荐
ping某1 小时前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx
JustHappy1 小时前
我汇总了身边朋友的经历才发现,其实第一份实习是最难找的......
前端·后端·面试
uhakadotcom1 小时前
在python 的 工程化架构中 ,什么是 薄包装器层?
后端·面试·github
唐青枫5 小时前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
用户1474853079746 小时前
CodeX使用Skill生成游戏美术和音乐资源,一分钟入门
后端
Melody1236 小时前
用 abort 中断 AI 流式请求,我之前做错了
后端
onething3656 小时前
Spring Boot + Spring AI 从入门到实战:7天转型计划 Day 5 —— SSE 流式输出 + 打字机效果
人工智能·后端·全栈
一个做软件开发的牛马6 小时前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户3721574261356 小时前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java
码事漫谈7 小时前
AI 编程的「三体」架构:OpenSpec + Superpowers + GStack 如何让一个开发者撑起整个研发团队
后端