当前位置: 代码网 > it编程>编程语言>Java > 一文详解springboot中的热启动配置方案

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

2025年07月03日 Java 我要评论
spring boot 的热启动(热部署)主要通过 **`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热启动内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com