Spring Boot 后端无需重启应用实现更新的方法咨询
Spring Boot 代码修改无需重启的实现方案
方案1:使用 Spring Boot DevTools(官方推荐,适合绝大多数开发场景)
这是Spring官方提供的免费开发工具,通过监控类路径下的文件变动,在代码编译后自动触发应用上下文的轻量重载,速度比全量重启快5~10倍,默认不会被打入正式生产包,无需担心线上环境误开启问题。
配置步骤如下:
- 第一步:引入依赖
Maven项目(pom.xml):
Gradle项目(build.gradle):<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency>developmentOnly 'org.springframework.boot:spring-boot-devtools' - 第二步:开启IDE自动编译
- IDEA用户:打开设置→Build,Execution,Deployment→Compiler,勾选 Build project automatically,再按快捷键
Ctrl+Shift+Alt+/选择Registry,勾选compiler.automake.allow.when.app.running - Eclipse用户:打开设置→General→Workspace,勾选 Build automatically 即可
- IDEA用户:打开设置→Build,Execution,Deployment→Compiler,勾选 Build project automatically,再按快捷键
- 第三步(可选):在application.yml/application.properties中自定义监控规则
spring: devtools: restart: enabled: true # 监控的代码目录 additional-paths: src/main/java # 不需要触发重启的静态资源路径 exclude: static/**,templates/**
注意:如果修改的是启动类注解、核心配置类等逻辑,仍需要全量重启应用生效。
方案2:使用 JRebel(商业方案,全场景热加载支持)
如果需要完全无重启的热加载能力,支持修改框架配置、MyBatis Mapper文件、甚至第三方依赖代码,可以选择JRebel方案。无需修改项目代码,只需要在IDE中安装JRebel插件并激活,启动项目时选择JRebel启动,修改代码后按Ctrl+Shift+F9编译即可立即生效,不需要任何重启操作。
注意事项
- 上述所有热部署方案仅建议在开发环境使用,禁止在生产环境开启,避免出现稳定性、安全性问题
- 如果使用Docker容器部署开发环境,需要将本地项目的类路径目录挂载到容器对应位置,才能正常触发热加载
内容的提问来源于stack exchange,提问作者mdara
相关产品推荐
相关产品推荐

