一文详解springboot中的热启动配置方案

 更新时间:2025年07月03日 10:12:33   作者:CATTLECODE  
SpringBoot的热启动主要通过 **`spring-boot-devtools`** 模块实现,能在代码修改后自动重启应用,大幅提升开发效率,下面小编就来和大家讲讲详细配置和使用指南

Spring Boot 的热启动(热部署)主要通过 **`spring-boot-devtools`** 模块实现,它能在代码修改后自动重启应用(无需手动停止再启动),大幅提升开发效率。以下是详细配置和使用指南:

一、核心机制

spring-boot-devtools 通过两阶段实现热更新:

1.自动重启(Restart):检测到 classpath 下的文件变动(如 Java 类、配置文件)→ 触发应用重启(速度比冷启动快)。

2.实时重载(LiveReload):配合浏览器插件,静态资源(HTML/CSS/JS)修改后自动刷新页面。

二、快速配置(3步)

1. 添加依赖

<!-- Maven pom.xml -->
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional> <!-- 避免依赖传递 -->
    </dependency>
</dependencies>
// Gradle build.gradle
dependencies {
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
}

2. 开启 IDEA 自动编译

设置路径Settings > Build, Execution, Deployment > Compiler

勾选 Build project automatically

启用运行时编译 (关键步骤!):Ctrl + Shift + A 搜索 Registry → 勾选:

compiler.automake.allow.when.app.running

3. 修改配置(可选)

# application.yml
spring:
  devtools:
    restart:
      enabled: true  # 默认true,可关闭
      trigger-file: .trigger # 用此文件触发重启(避免频繁保存触发)
      exclude: static/**      # 排除无需监控的目录

三、使用技巧

静态资源热更新(无需重启)

  • 前端文件位置src/main/resources/static 或 public
  • 浏览器安装插件:LiveReload
  • 修改 CSS/JS/HTML 后 → 自动刷新页面

跳过指定文件重启

// 在代码中排除触发重启
@SpringBootApplication
public class App {
    public static void main(String[] args) {
        System.setProperty("spring.devtools.restart.exclude", "templates/**");
        SpringApplication.run(App.class, args);
    }
}

手动触发重启

在项目中创建 src/main/resources/.trigger 文件(文件名与配置一致),修改该文件触发重启。

四、常见问题解决

修改 Java 代码后未重启

  • 检查是否关闭了 IDEA 的 Build project automatically
  • 确认 Registry 中的 compiler.automake.allow.when.app.running 已启用
  • 尝试手动 Build:Build > Build Project (Ctrl+F9)

静态资源修改未刷新

  • 检查是否使用了 src/main/webapp 目录(不推荐) → 改用 static 或 public
  • 浏览器禁用缓存:开发者工具 → Network → ✅ Disable cache

热部署失效(多模块项目)

在子模块的 pom.xml 中添加:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <excludeDevtools>false</excludeDevtools>
            </configuration>
        </plugin>
    </plugins>
</build>

五、高级方案:JRebel(付费)

若需 无重启热更新(直接替换内存中的类),推荐 JRebel:

  • 安装 IDEA 插件:JRebel and XRebel
  • 激活(可试用14天)
  • 启动项目时选择  Debug with JRebel

优势:修改 Java 代码后无需重启应用,实时生效(对大型项目提速显著)。

六、热启动原理图

mermaid代码导出svg

生产环境警告:务必移除 spring-boot-devtools 依赖(通过 <scope>provided</scope> 或 developmentOnly),避免安全风险!

到此这篇关于一文详解springboot中的热启动配置方案的文章就介绍到这了,更多相关springboot热启动内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java基础知识总结之继承

    Java基础知识总结之继承

    这一篇我们来学习面向对象的第二个特征——继承,文中有非常详细的基础知识总结,对正在学习java的小伙伴们很有帮助,需要的朋友可以参考下
    2021-06-06
  • Java实现PDF添加水印的完整方案

    Java实现PDF添加水印的完整方案

    在企业级应用中,PDF水印是文档安全管理的必备功能,无论是版权保护、版本标识,还是敏感信息管控,水印都扮演着重要角色,本文将提供一个生产级的PDF水印解决方案,需要的朋友可以参考下
    2026-02-02
  • Hibernate Validator实现更简洁的参数校验及一个util

    Hibernate Validator实现更简洁的参数校验及一个util

    这篇文章主要介绍了Hibernate Validator实现更简洁的参数校验及一个util,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • Java超详细分析讲解哈希表

    Java超详细分析讲解哈希表

    哈希表是一种根据关键码去寻找值的数据映射结构,该结构通过把关键码映射的位置去寻找存放值的地方,说起来可能感觉有点复杂,我想我举个例子你就会明白了,最典型的的例子就是字典
    2022-06-06
  • spring boot整合log4j2及MQ消费处理系统日志示例

    spring boot整合log4j2及MQ消费处理系统日志示例

    这篇文章主要为大家介绍了spring boot整合log4j2及MQ消费处理系统日志的示例过程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • 基于SpringBoot和Jacob实现WPS文件的自动转换

    基于SpringBoot和Jacob实现WPS文件的自动转换

    本文详细介绍了如何使用SpringBoot和Jacob实现WPS文件的自动转换,主要步骤包括配置项目目录、pom.xml、加载DLL、启动类、工具类、Service层和Controller层接口,最终,通过浏览器调用接口,可以下载转换后的WPS文件,需要的朋友可以参考下
    2025-11-11
  • Spring6 的JdbcTemplate的JDBC模板类的使用介绍(最新推荐)

    Spring6 的JdbcTemplate的JDBC模板类的使用介绍(最新推荐)

    JdbcTemplate 是Spring 提供的一个JDBC模板类,是对JDBC的封装,简化JDBC代码,当然,你也可以不用,可以让Spring集成其它的ORM框架,这篇文章主要介绍了Spring6 的JdbcTemplate的JDBC模板类的详细使用说明,需要的朋友可以参考下
    2024-05-05
  • IDEA更换新版本启动没反应的问题及解决

    IDEA更换新版本启动没反应的问题及解决

    文章总结:解决IDEA新版本启动无反应的问题,主要是因为IDEA64.exe.vmoptions配置文件中残留了老版本的javaagent信息,删除该信息并清理相关配置文件夹后,重新启动IDEA即可解决问题
    2025-11-11
  • SpringBoot+WebSocket实现即时通讯的方法详解

    SpringBoot+WebSocket实现即时通讯的方法详解

    这篇文章主要为大家详细介绍了如何利用SpringBoot+WebSocket实现即时通讯功能,文中示例代码讲解详细,对我们学习或工作有一定参考价值,需要的可以参考一下
    2022-05-05
  • springboot 3.x 整合 RocketMQ 5.x的详细过程

    springboot 3.x 整合 RocketMQ 5.x的详细过程

    本文介绍了如何在SpringBoot中使用RocketMQ 5.x客户端,包括依赖配置、参数设置、生产者和消费者的消息发送与接收示例以及服务端环境搭建,感兴趣的朋友跟随小编一起看看吧
    2025-12-12

最新评论