详解SpringBoot配置devtools实现热部署
发布时间 - 2026-01-11 01:03:16 点击率:次spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。

devtools的原理
深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。
使用需要添加以下的配置:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
说明:
(1) devtools可以实现页面热部署(即页面修改后会立即生效,这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现),实现类文件热部署(类文件修改后不会立即生效),实现对属性文件的热部署。 即devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),注意:因为其采用的虚拟机机制,该项重启是很快的
(2)配置了后在修改java文件后也就支持了热启动,不过这种方式是属于项目重启(速度比较快的项目重启),会清空session中的值,也就是如果有用户登陆的话,项目重启后需要重新登陆。默认情况下,/META-INF/maven,/META-INF/resources,/resources,/static,/templates,/public这些文件夹下的文件修改不会使应用重启,但是会重新加载(devtools内嵌了一个LiveReload server,当资源发生改变时,浏览器刷新)。
devtools的配置
在application.properties中配置spring.devtools.restart.enabled=false,此时restart类加载器还会初始化,但不会监视文件更新。
在SprintApplication.run之前调用System.setProperty(“spring.devtools.restart.enabled”, “false”);可以完全关闭重启支持,配置内容:
#热部署生效 spring.devtools.restart.enabled: true #设置重启的目录 #spring.devtools.restart.additional-paths: src/main/java #classpath目录下的WEB-INF文件夹内容修改不重启 spring.devtools.restart.exclude: WEB-INF/**
IDEA配置
当我们修改了Java类后,IDEA默认是不自动编译的,而spring-boot-devtools又是监测classpath下的文件发生变化才会重启应用,所以需要设置IDEA的自动编译:
(1)File-Settings-Compiler-Build Project automatically
(2)ctrl + shift + alt + /,选择Registry,勾上 Compiler autoMake allow when app running
测试
- 修改类–>保存:应用会重启
- 修改配置文件–>保存:应用会重启
- 修改页面–>保存:应用不会重启,但会重新加载,页面会刷新(原理是将spring.thymeleaf.cache设为false,参考:Spring Boot配置模板引擎)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# spring
# boot
# devtools
# springboot
# dev
# tools
# 热部署
# springBoot 插件工具热部署 Devtools的步骤详解
# 一篇文章带你搞定SpringBoot中的热部署devtools方法
# SpringBoot2.X Devtools热部署实现解析
# Springboot项目基于Devtools实现热部署步骤详解
# SpringBoot Devtools实现项目热部署的方法示例
# springboot + devtools(热部署)实例教程
# SpringBoot使用DevTools实现后端热部署的过程详解
# 重启
# 加载
# 较快
# 又是
# 也就
# 才会
# 还会
# 设为
# 可以直接
# 为其
# 可以实现
# 会使
# 当我们
# 第三方
# 较少
# 后会
# 该项
# 来实现
# 用户登陆
# 配置文件
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
,在苏州找工作,上哪个网站比较好?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
Java遍历集合的三种方式
Laravel如何自定义错误页面(404, 500)?(代码示例)
javascript中的try catch异常捕获机制用法分析
如何在建站宝盒中设置产品搜索功能?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
php485函数参数是什么意思_php485各参数详细说明【介绍】
如何在Tomcat中配置并部署网站项目?
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
使用Dockerfile构建java web环境
文字头像制作网站推荐软件,醒图能自动配文字吗?
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
Bootstrap整体框架之CSS12栅格系统
如何解决hover在ie6中的兼容性问题
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
如何在不使用负向后查找的情况下匹配特定条件前的换行符
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
个人网站制作流程图片大全,个人网站如何注销?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
详解vue.js组件化开发实践
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
php结合redis实现高并发下的抢购、秒杀功能的实例
Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】
Android自定义listview布局实现上拉加载下拉刷新功能
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
Laravel如何实现多对多模型关联?(Eloquent教程)
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
如何正确选择百度移动适配建站域名?
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道
利用python获取某年中每个月的第一天和最后一天
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
Laravel如何实现一对一模型关联?(Eloquent示例)
Laravel如何处理和验证JSON类型的数据库字段
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
北京网站制作公司哪家好一点,北京租房网站有哪些?
免费视频制作网站,更新又快又好的免费电影网站?
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
想要更高端的建设网站,这些原则一定要坚持!
消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工
如何在阿里云香港服务器快速搭建网站?
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
LinuxCD持续部署教程_自动发布与回滚机制
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
微信小程序 canvas开发实例及注意事项

