Spring Boot 中 Developer Tools 的配置和使用

本贴最后更新于 998 天前,其中的信息可能已经时异事殊

Developer Tools 是 Spring 提供的一个提高开发效率的工具。

如何使用?

需要在 Spring Boot 项目中添加相关依赖:

Maven 配置

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

Gradle 配置

dependencies {
    developmentOnly("org.springframework.boot:spring-boot-devtools")
}

自动重启

DevTools 会监控 classpath 路径中的文件,当这些文件发生变化并且发生某些触发动作时,应用将会被自动重启。

在不同的 IDE 中,这些触发动作是不同的:

  • 在 Eclipse 中,当保存文件时会触发自动重启。
  • 在 IEDA 中,则是在编译时触发(【Build】-->【Build Project】,快捷键 Ctrl + F9)。

在使用 IEDA 时,需要手动编辑时才会触发自动重启,这显然还是不太方便 。

为了避免每次都手动编译,我们可以配置更新策略:

  1. 点击主菜单中的【Run】--> 【Edit Configurations】。
  2. 在弹出的【Run/Debug Configurations】窗口中,选中需要配置的应用。
  3. Running Application Update Policies 下面进行配置:
    1. On 'Update' action -- 配置当”更新“发生时,采取的动作。(备注:我没搞明白这个更新时机是啥,当只配置这一项时,好像不起作用,IDEA 版本:2020.4)。
    2. On frame deactivation -- 配置当 IDEA 窗口”失活“(比如切换到浏览器等其他窗口),采取的动作。这一项配置是有效的,我将这一项配置为 ”Update classes and resources“ ,当我改完代码切换到浏览器时,应用会自动重启。
      image20210725193252971.png

作用和原理

DevTools 的主要作用是减少重启的时间,它并不是真正的热加载技术(比如:JRebel)。

DevTools 的基本原理是,将代码分为两部分:不变的部分(比如第三方 JAR 包)和变化部分。不变的部分(比如第三方 JAR 包)由 base blassloader 加载,变化的部分由 restart classloader 加载。这样每次重启时,只加载变化的部分,这样就减少了启动的时间。

相关资料

8. Developer Tools

Application update policies

  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    940 引用 • 1458 回帖 • 160 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...