首页> 文章> 详情

Spring Boot 2.0 - 开发者工具devtools热部署教程(自动重载)

教程分享 > Java教程 (2711) 2024-04-17 12:31:27

1.前言

    如果你曾经在最新的UI开发框架上工作过,比如Node,angular,gulp等等,那么当你在某些代码发生变化的时候,你一定会意识到在浏览器中自动重新加载UI。它非常有用,并节省了大量的时间。

    那么,相同的功能可以在使用spring-boot-devtools依赖提供的功能的Spring Boot应用程序中使用。让我们学习如何启用这些功能并使用它们。
 

2.启用开发工具模块

在启动应用程序中启用开发工具非常容易。只需spring-boot-devtools在构建文件中添加依赖关系即可。

Maven的

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

Gradle
 

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

静态资源缓存

为了提高性能,开发工具缓存静态内容/模板文件以更快地为浏览器/客户端提供服务。这是生产过程中非常好的特性,每毫秒的性能改进都很重要。但是在开发环境中,它可能会成为问题并导致缓存问题,并且您可能无法在浏览器中立即看到您的更改。开发工具模块通过设置一些属性来提供这种功能。

默认情况下,此功能被禁用。您可以通过设置属性使其在生产环境中使用。

有很多这样的UI模板库支持这个功能。如thymeleaf, freemarker, groovy等

application.properties

#spring.freemarker.cache = true //生产环境设置为true
spring.freemarker.cache = false //开发环境设置为false,默认false
 
//Other such properties
 
spring.thymeleaf.cache = false
spring.mustache.cache = false
spring.groovy.template.cache = false

自动刷新vs自动重启 - 自动刷新(或自动加载)是指在浏览器重新加载UI以查看静态内容更改。自动重启被称为重载服务器端代码和配置,随后服务器重启。

 

自动刷新UI页面

spring-boot-devtools模块包含一个嵌入式LiveReload服务器,可用于在资源发生更改时触发浏览器刷新。先决条件是你的浏览器应该支持它的扩展。您可以在此链接中找到此类浏​​览器扩展。

默认情况下,启用实时重新加载。如果由于某种原因希望禁用此功能,请将spring.devtools.livereload.enabled属性设置为false

application.properties

spring.devtools.livereload.enabled  = false #Set false to disable live reload

从自动重新加载中排除资源

默认情况下,自动重新加载适用于以下路径:

  1. /META-INF/maven
  2. /META-INF/resources
  3. /resources
  4. /static
  5. /public
  6. /templates

如果您想禁用浏览器中的这些路径中少数文件的自动重新加载,请使用spring.devtools.restart.exclude属性。例如

spring.devtools.restart.exclude=static/**,public/**

观看/排除其他路径

可能有少量文件不在classpath中,但您仍然可能需要查看这些addtional文件/路径以重新加载应用程序。为此,请使用该spring.devtools.restart.additional-paths属性。

spring.devtools.restart.additional-paths=script/**

同样,如果您想保留这些默认值并添加其他排除项,请改用该spring.devtools.restart.additional-exclude属性。

spring.devtools.restart.additional-exclude=styles/**

自动重启服务器

自动重启意味着重新加载服务器端的java类和配置。服务器端更改动态重新部署后,服务器重新启动并加载修改后的代码和配置。

 

启用/禁用自动配置更改的记录

默认情况下,每次应用程序重新启动时,都会记录显示条件评估增量的报告。该报告显示了在您进行更改(如添加或删除Bean以及设置配置属性)时对应用程序自动配置的更改。

要禁用报告的日志记录,请设置以下属性:

spring.devtools.restart.log-condition-evaluation-delta = false

禁用重新启动

要禁用非静态代码更改时重新启动服务器,请使用该属性spring.devtools.restart.enabled

spring.devtools.restart.enabled = false

使用触发文件

自动重新启动可能需要每次文件更改,有时由于频繁重新启动,可能会缩短开发时间。为了解决这个问题,你可以使用一个触发文件。Spring引导将继续监视该文件,一旦它检测到该文件中的任何修改,它将重新启动服务器并重新载入您以前的所有更改。

使用spring.devtools.restart.trigger-file属性来提供您的应用程序的触发器文件。它可以是任何外部或内部文件。

spring.devtools.restart.trigger-file = c:/workspace/restart-trigger.txt

全局设置文件

每次为所有弹簧引导项目或模块设置所有您喜欢的配置选项可能会变得重复。您可以使用全局设置文件将其最小化。然后单个项目/模块将继承全局文件中的所有自定义设置,并且如果需要,它们可以覆盖每个项目基础的任何特定设置。

要创建全局文件,请转到您系统的用户主目录并创建一个名为的文件.spring-boot-devtools.properties。(请注意,文件名以点开头)。不使用此全局属性文件来配置全局可用选项。
.spring-boot-devtools.properties

spring.devtools.restart.trigger-file = c:/workspace/restart-trigger.txt
https://www.leftso.com/article/403.html

相关文章

Spring Boot 2.0 Redis整合,通过spring boot 2.0整合Redis作为spring缓存框架的实现。
spring boot 2.0 security 5.0 整合,实现自定义表单登录。spring boot 2.0框架使用。
Spring Boot 2.0,Spring框架的Spring Boot 中的Spring Boot Actuator变化讲解。并且了解如何在Spring Boot 2.0中使用Actuator...
Spring Boot 2.0 有哪些新特性_Spring Boot 2.0新功能,在本文中,我们将探讨为Spring Boot 2.0计划的一些更改和功能。我们还会描述这些变化如何帮助我们提高...
Spring Boot 2.0 绑定properties属性资源文件 Spring Boot 2.0 读取properties配置文件值 Spring Boot 2.0获取properties配...
Spring Boot 1.x升级到Spring Boot 2.0迁移指南
学习使用Java配置创建Spring批处理作业(具有多个步骤)。 它使用Spring Boot 2,Spring batch 4和H2数据库来执行批处理作业。
Spring Boot 2.0 支持的Apache Camel 版本发布了_Apache Camel 2.22发布支持Spring Boot 2.0
本文将介绍Spring Boot和HikariCP示例。HikariCP是快速,简单,可靠和生产就绪的JDBC连接池。在Spring Boot 2.0版本中,默认数据库池技术已从Tomcat P...
Spring Boot 2.1 新特性,已升级Spring 版本为5.1,支持servlet 4.0,支持Tomcat 9.0等等
Spring Boot 2.0 @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") 注解格式化日期失效原因及解决。
前言在这个Spring HATEOAS示例中,我们将学习如何将HATEOAS链接添加到在spring boot项目中创建的现有REST API
Spring Boot 2.0 入门 logoback配置实战教程,俗话说好马配好鞍。Spring Boot 框架从各方面给我们带来了开发效率。日志自然也不会落下。本文将讲解与Spring Bo...