springboot devtools热部署

本文详细介绍了SpringBoot DevTools的热部署原理,它通过重启项目来实现快速更新,利用两个ClassLoader处理变化和不变的类。添加相应依赖后,修改代码并构建即可实现热部署。对于Thymeleaf模板,需要关闭缓存以生效。此外,文章还讨论了如何配置重启和刷新目录,以及如何启用和配置LiveReload Server,以便在资源变更时自动刷新浏览器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

springboot 能实现热部署的方式有很多种,官方推荐使用 devtools 热部署,所以在此对其他热部署不做介绍

热部署原理
spring-boot-devtools 模块能够实现热部署,添加类、添加方法、修改配置文件、修改页面等都能实现热部署。原理就是重启项目,但比手动重启快多了,其深层原理是使用了两个ClassLoader。一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为 restart ClassLoader,这样在有代码更改的时候,原来的 restart ClassLoader 被丢弃,重新创建一个 restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启效果

添加依赖

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-devtools</artifactId>
     <optional>true</optional><!--不能被其它模块继承-->
     <scope>runtime</scope><!--只在运行时起作用,打包时不打进去-->
</dependency>

只要添加依赖,当你改完代码点击如下按钮 build 就会热发布在这里插入图片描述

注意点
如果使用了 thymeleaf,那一定要配置关闭缓存,否则修改了 html,build 后也看不到效果

spring:
  thymeleaf:
    cache: false

默认情况下,/META-INF/maven,/META-INF/resources,/resources,/static,/templates,/public 这些文件夹下的文件修改不会使应用重启,但是会重新加载(devtools 内嵌了一个 LiveReload Server,当资源发生改变时,浏览器刷新)
如果想改变默认的设置,可以自己设置不重启的目录:spring.devtools.restart.exclude=static/,public/,这样的话,就只有这两个目录下的文件修改不会导致 restart 操作了
如果要在保留默认设置的基础上还要添加其他的排除目录:spring.devtools.restart.additional-exclude=/目录名
如果想要使得当非 classpath 下的文件发生变化时应用得以重启,使用:spring.devtools.restart.additional-paths=/目录名,这样 devtools 就会将该目录列入了监听范围
LiveReload Server
spring-boot-devtools 模块包括一个嵌入式 LiveReload 服务器,可用于在更改资源时触发浏览器刷新。LiveReload 浏览器扩展程序可从livereload.com免费用于 Chrome,Firefox 和 Safari

如果您不想在应用程序运行时启动 LiveReload 服务器,则可以将spring.devtools.livereload.enabled属性设置为 false

注意: 您一次只能运行一个 LiveReload 服务器。在启动应用程序之前,请确保没有其他 LiveReload 服务器正在运行。如果从 IDE 启动多个应用程序,则只有第一个具有 LiveReload 支持。 我使用的是火狐浏览器,首先在插件库里搜索并且安装 LiveReload 插件在这里插入图片描述

按照完成后浏览器右上角可以启动插件在这里插入图片描述

此时当我改完 html 文件只需要点击 build 浏览器会自动刷新

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值