SpringBoot热部署重启关闭(DevTools)

一、DevTools依赖

1、DevTools简介

在Spring Boot项目中,spring-boot-devtools模块提供了多种开发时的便利功能,其中最显著的是restart和livereload特性,它们分别用于应用代码的热重启和前端资源的即时重载。

devtools依赖:

   <!-- spring-boot-devtools -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional> <!-- 表示依赖不会传递 -->
        </dependency>

1.1 Restart 特性

spring-boot-devtools中的restart特性允许Spring Boot应用在检测到代码或配置文件发生变化时自动重启,从而避免了手动重启应用的麻烦。这在开发阶段可以极大地提高迭代速度,因为开发者可以立即看到代码变更的效果。

配置参数如下:

  • spring.devtools.restart.enabled: 控制是否开启restart功能,默认为true。
  • spring.devtools.restart.additional-paths: 指定除了默认的class path之外,还需要监视的额外文件夹路径。
  • spring.devtools.restart.additional-excludes: 指定不应该被监视的额外路径,即使这些路径在additional-paths中被指定。
  • spring.devtools.restart.exclude: 指定不被监视的文件或目录模式,例如**/*.properties可以排除所有属性文件。

1.2 LiveReload 特性

livereload特性主要针对前端资源如HTML、CSS和JavaScript文件,当这些文件发生更改时,浏览器会自动刷新页面,无需手动刷新。

配置参数如下:

  • spring.devtools.livereload.enabled: 控制是否开启LiveReload功能,默认为true。
  • spring.devtools.livereload.port: LiveReload服务器监听的端口,默认为35729。

spring-boot-devtools的restart和livereload特性通过自动化重启和资源重载,极大地提升了开发效率,特别是在频繁修改代码和前端资源的情况下。然而,这些特性通常只在开发环境中使用,生产环境应禁用以避免不必要的重启和安全风险。

二、关闭热部署重启配置

devtools模块的 restart和 livereload特性默认都是开启状态。

如果关闭热部署热部署重启,我们需要在 applicaton.yml文件中关闭它。

spring:
  # devtools模块配置
  devtools:
    restart:
      # 热部署开关
      enabled: false
    livereload:
      enabled: false

关闭热部署重启之后,我们发现热部署重启还是生效的。这时,我们需要重点注意这个弹框提示。并在IDEA做额外配置。

在这里插入图片描述

三、彻底关闭热部署重启流程

1、为什么会出现这个提示?

IDEA(IntelliJ IDEA)在Debug模式下,当你修改了源代码并重新编译后,如果检测到类文件发生了变化,它可能会弹出提示“Some classes have been changed, Reload changed classes now?”。这个提示是IDEA的热加载(HotSwap)功能的一部分,用于询问你是否希望立即重新加载这些更改的类文件,以便在不重启Debug会话的情况下查看更改的效果。

  • 热加载(HotSwap)功能:IDEA支持在Debug模式下对正在运行的Java应用程序进行类文件的热更新。当你修改了源代码并重新编译后,IDEA会检测到这些变化,并询问你是否希望将这些更改应用到正在运行的程序上。
  • 默认设置:IDEA的默认设置可能会在某些情况下自动弹出这个提示,尤其是当你第一次在Debug模式下修改并重新编译类文件时。

2、如何取消这个提示?

如果你不希望每次修改类文件后都看到这个提示,可以在 IDEA的 settings 中 调整HotSwap设置来取消它。

打开IDEA的设置(Preferences/Settings > Build, Execution, Deployment > Debugger > HotSwap)。

可以找到 Reload classes after compilation这一选项,并根据你的需求选择Always、Never或Ask(默认)。

  • Never:将阻止IDEA在编译后自动弹出重新加载类的提示。但请注意,这样做可能会阻止你查看对正在运行的Debug会话所做的更改。
  • Always:将自动重新加载更改的类,而不会弹出提示。
  • Ask(默认):将保留当前的默认行为,即每次编译后都会询问你是否希望重新加载类。

如果项目源代码更改之后,不需要自动重新加载更改的类,而是手动重启项目。所以你就可以勾选 Never。

3、彻底关闭热部署重启配置

项目中依赖了 devtools模块,但是我想彻底关闭它的热部署重启,简单两步即可。

(1)关闭热部署重启配置

spring:
  # devtools模块配置
  devtools:
    restart:
      # 热部署开关
      enabled: false
    livereload:
      enabled: false

(2)HotSwap设置为 Never

在这里插入图片描述

– 求知若饥,虚心若愚。

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!关于Spring Boot的热部署和手动重启的问题,我可以给你一些建议。通常情况下,Spring Boot支持热部署,可以在开发过程中实时更新代码而无需手动重启应用程序。但有时候可能会遇到需要手动重启两次才能生效的情况。 首先,你可以尝试以下几个步骤来解决这个问题: 1. 确保你的应用程序启用了热部署功能。在Spring Boot的开发环境中,可以通过在`pom.xml`文件中添加以下依赖来实现: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> ``` 2. 确保你的IDE(如IntelliJ IDEA或Eclipse)已经正确配置了自动编译和重新加载功能。这样当你修改代码后,IDE会自动编译并重新加载应用程序。 3. 清理IDE和构建工具(如Maven或Gradle)生成的临时文件和缓存。有时这些文件可能会导致问题,删除它们可以帮助解决一些奇怪的行为。 4. 如果以上步骤都没有解决问题,你可以尝试手动重启应用程序两次来确保更新生效。这可能是因为某些原因第一次重启时没有完全生效,第二次重启可以让更新生效。 另外,你还可以尝试使用Spring Boot的热部署插件,如Spring Loaded或JRebel,来提高热部署的性能和可靠性。这些插件可以在不重启应用程序的情况下实时加载更新的代码。 希望以上建议能帮助到你!如果你有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值