spring-boot-devtools是一个为开发者服务的一个模块,其中最重要的功能就是自动的将应用更改的代码到上传至应用中,即在开发人员改变了一些代码或者配置文件时,应用可以自动重启,相信这功能对于开发人员来说的话是非常有用的,称之为热部署(热加载)。

Spring Boot 1.3引入了devtools,这是一个在Spring Boot应用程序上工作时提高开发时间效率的模块。要启用它,只需将以下依赖项添加到项目中:

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

devtools运行时,如果重新编译应用程序并自动刷新,它会检测到更改。这不仅适用于资源,还适用于代码。它还提供一个LiveReload服务器以便每当事情发生变化时,它可以自动触发浏览器刷新。

Devtools可以配置为仅在静态资源已更改时才刷新浏览器(并忽略代码中的任何更改)。只需在项目中包含以下属性:

spring.devtools.remote.restart.enabled=false

devtools之前,该插件默认情况下支持热备份资源,但是目前已经被禁用了,如果需要使用,可以随时通过配置项目来恢复它,具体配置信息如下:

<build>
  ...
  <plugins>
    ...
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <version>1.5.6.RELEASE</version>
      <configuration>
<addResources>true</addResources>
      </configuration>
    </plugin>
    ...
  </plugins>
  ...
</build>

当启用addResources时,如果运行应用程序,任何src/main/resources文件夹将被添加到应用程序类路径,并且将删除在target/classes中找到的任何重复项。这样可以让刷新资源更加清晰,这在开发web应用程序时非常有用。在使用HTMLCSSJavaScript文件,可以立即查看更改而无需重新编译应用程序,这使得前端开发人员无需下载和安装Java IDE

默认情况下,修改/META-INF/maven/META-INF/resources/resources/static/public或者/templates目录下的内容不会引起应用的重新启动。意思是java代码,pom文件,application.properties(yml)文件的修改都会引起重新启动。

通过以下方式,可以指定只有哪些目录下的内容修改不会引起重启:

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

以上配置说明只有static目录和public目录下的内容修改后不会引起重启。由于默认的配置已经比较合理,所以我们进行上述配置,一种可能的情况是希望在默认的配置下,添加其他目录下内容修改时也不重新启动,将spring.devtools.restart.exclude改为spring.devtools.restart.additional-exclude即可。

注意:

1)使用此功能的副作用是在构建时过滤资源将不起作用。

2)为了与重新包装目标保持一致,运行目标以这样的方式构建类路径,即插件配置中排除的任何依赖项也从类路径中排除。

3)在运行应用程序时包含测试依赖关系此功能是有用的。例如,如果要在使用存根类的测试模式下运行应用程序。可以将useTestClasspath参数设置为true。注意的是这仅适用于运行应用程序时而重新打包目标不会将测试依赖关系添加到生成的JAR/WAR

关注下方微信公众号“Java精选”(w_z90110),回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。

Java精选专注程序员推送一些Java开发知识,包括基础知识、各大流行框架(Mybatis、Spring、Spring Boot等)、大数据技术(Storm、Hadoop、MapReduce、Spark等)、数据库(Mysql、Oracle、NoSQL等)、算法与数据结构、面试专题、面试技巧经验、职业规划以及优质开源项目等。其中一部分由小编总结整理,另一部分来源于网络上优质资源,希望对大家的学习和工作有所帮助。

评论

  1. #1

    Jerry (2017/09/29 15:32:21)回复
    学习了,好好学习了!

分享:

支付宝

微信