当前位置: 首页 > article >正文

springboot自动重启及SpringBoot Developer tools简介

项目中引用了SpringBoot Developer tools,修改类后会自动重启。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

springboot developer tools的作用

用于提升开发体验,比如修改类文件自动重启、修改静态文件热加载、提供属性默认值、远程debug等。打包时,默认并不会将devleloper tools打入,除非禁用excludeDevtools

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <excludeDevtools>false</excludeDevtools>
            </configuration>
        </plugin>
    </plugins>
</build>

自动重启的原理

只要ClassPath有文件发生变化就会自动重启,自动重启的原理是,有一个BaseClassLoader加载library中的类,有一个RestartClassLoader加载开发的类,开发的类变更了,则创建新的RestartClassLoader加载开发类,丢弃老的RestartClassLoader;有时,修改了注释、加个空行、都自动重启,这是不合时宜的,而且使用intellij idea本身就会热加载,不需要重启(热加载和重启是不同的),禁用SpringBoot Developer tools的自动重启功能,有两个办法

  • 在application.yml或application.properties中配置spring.devtools.restart.enabled为false,这种RestartClassLoader仍然加载类,但不再监控类变化。

  • 在调用SpringApplication.run之前,配置System property完全禁用,这种就不会创建RestartClassLoader

    public static void main(String[] args) {
        System.setProperty("spring.devtools.restart.enabled", "false");
        SpringApplication.run(MyApp.class, args);
    }
    

顺便提一句,SpringBoot Developer tools还提供了默认的属性值,比如 template engines (FreeMarker、Thymeleaf、Mustache)默认会缓存编译文件以提高效率,但在开发阶段这是不合时宜的,所以SpringBoot Developer tools提供的spring.thymeleaf.cache是false,完整的属性默认值可参考DevToolsPropertyDefaultsPostProcessor.


http://www.kler.cn/a/149788.html

相关文章:

  • 【C++ 算法进阶】算法提升十三
  • HarmonyOS Next 实战卡片开发 02
  • 大数据技术之Hadoop :我是恁爹
  • 光流法与直接法在SLAM中的应用
  • 【Android】webview常用方法和使用
  • 掌握核密度图:精准描绘不同年龄段的血糖分布
  • 22-Python与设计模式--状态模式
  • 2023亚太地区数学建模B题思路分析+模型+代码+论文
  • LeetCode 5 最长回文子串
  • Oracle Linux 9.3 发布
  • 大模型加载的参数介绍及推荐表,temperature、top_k、top_p、num_beams、num_beam_groups、do_sample等
  • Python压缩、解压文件
  • 数据库中生成列的对比
  • C 语言头文件
  • 图书管理系统源码,图书管理系统开发,图书借阅系统源码配置和运行图解源码已附加
  • 【华为OD题库-042】战场索敌-java
  • Kafka集群部署详细教程
  • Bug 检查 0x7B:INACCESSIBLE_BOOT_DEVICE(未解决)
  • Android WorldWind加载shapefile格式文件形成三维效果
  • Android 13.0 无源码app修改它的icon图标
  • 【pytest】执行环境切换的两种解决方案
  • IO和NIO的区别 BIO,NIO,AIO 有什么区别? Files的常用方法都有哪些?
  • 计算机端口
  • 量子力学应用:探索科技前沿的奇幻之旅
  • 智慧城市包括哪些内容?有哪些智慧城市物联网方案?
  • unity实时保存对象的位姿,重新运行程序时用最后保存的数据给物体赋值