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

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
暂无评论,快来抢首发吧!!!