导入依赖:

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

Developer tools are automatically disabled when running a fully packaged application. If your application is launched from java -jar or if it is started from a special classloader, then it is considered a “production application”. If that does not apply to you (i.e. if you run your application from a container), consider excluding devtools or set the -Dspring.devtools.restart.enabled=false system property.(运行完全打包的应用程序时,将自动禁用开发人员工具。 如果您的应用程序是从java -jar启动的,或者是从特殊的类加载器启动的,则将其视为“生产应用程序”。 如果这不适用于您(即,如果您从容器中运行应用程序),请考虑排除devtools或设置-Dspring.devtools.restart.enabled = false系统属性。

1.属性默认值

Spring Boot支持的一些库使用缓存来提高性能。例如,模板引擎缓存已编译的模板,以避免重复解析模板文件。另外,Spring MVC可以在提供静态资源时向响应添加HTTP缓存头。

尽管缓存在生产中非常有益,但在开发过程中可能适得其反,从而使您无法看到刚刚在应用程序中所做的更改。因此,默认情况下,spring-boot-devtools禁用缓存选项。

缓存选项通常由application.properties文件中的设置配置。例如,Thymeleaf提供了该spring.thymeleaf.cache属性。

spring.thymeleaf.cache=false;

由于在开发Spring MVC和Spring WebFlux应用程序时需要有关Web请求的更多信息,因此开发人员工具将启用DEBUG日志web记录组的日志记录。这将为您提供有关传入请求,正在处理的处理程序,响应结果等的信息。如果您希望记录所有请求的详细信息(包括潜在的敏感信息),则可以打开spring.http.log-request-details配置属性。

spring.http.log-request-details=true;

如果你不想被应用属性默认可以设置spring.devtools.add-propertiesfalseapplication.properties

2.自动重启

spring-boot-devtools只要类路径上的文件发生更改,使用的应用程序就会自动重新启动。在IDE中工作时,这可能是一个有用的功能,因为它为代码更改提供了非常快速的反馈循环。默认情况下,将监视类路径上指向文件夹的任何条目的更改。请注意,某些资源(例如静态资产和视图模板)不需要重新启动应用程序

注:

1.DevTools依靠应用程序上下文的关闭挂钩在重新启动期间将其关闭。如果您禁用了关机挂钩(SpringApplication.setRegisterShutdownHook(false)),它将无法正常工作。

2.当决定是否在类路径中的条目应该触发重新启动时,它的变化,DevTools自动忽略命名的项目spring-bootspring-boot-devtoolsspring-boot-autoconfigurespring-boot-actuator,和spring-boot-starter.

3.DevTools需求来定制ResourceLoader使用的ApplicationContext。如果您的应用程序已经提供了,它将被包装。不支持直接覆盖getResource方法ApplicationContext.

2.1重新启动与重新加载

Spring Boot提供的重启技术通过使用两个类加载器来工作。不变的类(例如,来自第三方jar的类)将被加载到类加载器中。您正在积极开发的类将加载到重新启动类加载器中。重新启动应用程序时,将丢弃重新启动类加载器,并创建一个新的类加载器。这种方法意味着应用程序的重启通常比“冷启动”要快得多,因为基本类加载器已经可用并已填充。

如果发现重新启动对于您的应用程序来说不够快,或者遇到类加载问题,则可以考虑从ZeroTurnaround 重新加载技术,例如JRebel。这些方法通过在加载类时重写类来使其更易于重新加载。

2.2记录条件评估中的更改

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

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

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

2.3排除资源

某些资源在更改时不一定需要触发重新启动。例如,Thymeleaf模板可以就地编辑。默认情况下,改变资源/META-INF/maven/META-INF/resources/resources/static/public,或/templates不触发重新启动,但确会触发现场重装。如果要自定义这些排除项,则可以使用该spring.devtools.restart.exclude属性。例如,仅排除/static/public您将设置以下属性:

spring.devtools.restart.exclude =static/ **,public/ **
注:如果要保留这些默认值并添加其他排除项,请改用spring.devtools.restart.additional-exclude属性。

2.4监视其它路径

 使用该spring.devtools.restart.additional-paths属性配置其他路径以监视更改。您可以使用前面描述spring.devtools.restart.exclude属性来控制其他路径下的更改是触发完全重新启动还是实时重新加载

2.5禁用重启

如果您不想使用重新启动功能,则可以使用该spring.devtools.restart.enabled属性将其禁用。在大多数情况下,您可以在自己的属性中设置此属性application.properties(这样做仍会初始化重新启动类加载器,但它不会监视文件更改)。

如果您需要完全禁用重启支持(例如,因为它不适用于特定的库),则需要在调用之前将spring.devtools.restart.enabled System属性设置为,如以下示例所示:falseSpringApplication.run(…​)

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

2.6使用触发文件

如果使用持续编译更改文件的IDE,则可能更喜欢仅在特定时间触发重新启动。为此,您可以使用“触发文件”,这是一个特殊文件,当您要实际触发重新启动检查时必须对其进行修改。

  对文件的任何更新都将触发检查,但是只有在Devtools检测到有事情要做的情况下,重启才真正发生。

要使用触发文件,请将spring.devtools.restart.trigger-file属性设置为触发文件的名称(不包括任何路径)。触发文件必须出现在类路径上的某个位置。

例如,如果您的项目具有以下结构:

src
+-main
+-resources
+-.reloadtrigger

那么您的trigger-file财产将是:

spring.devtools.restart.trigger-file=.reloadtrigger

现在,仅在src/main/resources/.reloadtrigger更新时才会重新启动。

  您可能希望将其设置spring.devtools.restart.trigger-file全局设置,以便所有项目以相同的方式运行。

2.7自定义重启类加载器

默认情况下,IDE中任何打开的项目都使用“重新启动”类加载器加载,而任何常规.jar文件都使用“基本”类加载器加载。如果您在多模块项目上工作,并且并非每个模块都导入到IDE中,则可能需要自定义内容。为此,您可以创建一个META-INF/spring-devtools.properties文件。

spring-devtools.properties文件可以包含以restart.exclude和为前缀的属性restart.include。该include元素是应该被拉高到“重启”的类加载器的项目,以及exclude要素是应该向下推入“基地”类加载器的项目。该属性的值是应用于类路径的正则表达式模式,如以下示例所示:

restart.exclude.companycommonlibs=/mycorp-common-[\\w\\d-\.]+\.jar
restart.include.projectcommon=/mycorp-myproj-[\\w\\d-\.]+\.jar
  所有属性键都必须是唯一的。只要属性以restart.include.或开始,restart.exclude.就可以考虑。
  所有META-INF/spring-devtools.properties从类路径加载。您可以将文件打包到项目内部,也可以打包到项目使用的库中。

2.8局限性

重新启动功能不适用于通过使用标准反序列化的对象ObjectInputStream。如果你需要反序列化的数据,你可能需要使用Spring的ConfigurableObjectInputStream结合Thread.currentThread().getContextClassLoader()。

不幸的是,一些第三方库在不考虑上下文类加载器的情况下反序列化。如果发现这样的问题,则需要向原始作者请求修复。

3.LiveReload

spring-boot-devtools模块包括一个嵌入式LiveReload服务器,该服务器可用于在更改资源时触发浏览器刷新。可从livereload.com免费获得适用于Chrome,Firefox和Safari的LiveReload浏览器扩展。

如果您不想在应用程序运行时启动LiveReload服务器,则可以将spring.devtools.livereload.enabled属性设置为false

注:一次只能运行一台LiveReload服务器。在启动应用程序之前,请确保没有其他LiveReload服务器正在运行。如果从IDE启动多个应用程序,则只有第一个具有LiveReload支持。
4.全局设置

可以通过将以下任何文件添加到$HOME/.config/spring-boot文件夹来配置全局devtools设置:

  1. spring-boot-devtools.properties

  2. spring-boot-devtools.yaml

  3. spring-boot-devtools.yml

添加到这些文件的任何属性都将应用于使用devtools的计算机上的所有 Spring Boot应用程序。例如,要将重新启动配置为始终使用触发文件,应添加以下属性:

〜/ .config / spring-boot / spring-boot-devtools.properties
spring.devtools.restart.trigger-file=.reloadtrigger
注:如果在中找不到devtools配置文件$HOME/.config/spring-boot,则在$HOME文件夹的根目录中搜索是否存在.spring-boot-devtools.properties文件。这使您可以与不支持该$HOME/.config/spring-boot位置的旧版Spring Boot上的应用程序共享devtools全局配置
  在上述文件中激活的配置文件不会影响特定于配置文件的配置文件的加载。
 

springboot开发人员工具(自动重启及相关的配置)的更多相关文章

  1. IE8“开发人员工具”使用详解上(各级菜单详解)

    来源: http://www.cnblogs.com/JustinYoung/archive/2009/03/24/kaifarenyuangongju.html IE8“开发人员工具”使用详解上(各 ...

  2. Chrome_浏览器开发人员工具

    Google Chrome 浏览器开发人员工具,让网页开发变得更轻松 无论是 IE 6/7 的 Internet Explorer Developer Toolbar 或者是 IE 8 自带的 Dev ...

  3. IE开发人员工具教程

    写在前面 一直非常谷歌的控制台,因为我是做前端的,谷歌浏览器在我看来是解析JS最快的浏览器,所谓的熟能生巧,用熟悉了谷歌浏览器之后就特别喜欢用谷歌的控制台调试脚本.改变样式.查看HTML.查看资源加载 ...

  4. IE开发人员工具之实用功能讲解

    F12快捷键调出开发人员工具 一.JS的内容格式化 1.内容较乱的js脚本: 2.勾选下面两项即可进行格式化脚本:自动换行与格式化JS 3.调理清楚的脚本 二:清空控制台 1.右键->清空 2. ...

  5. 常用JS调试工具使用方法,帮你快速定位问题(Firebug+ IE“开发人员工具”)

    来源: 这里花了点时间小结了下目前项目中比较合适易于上手的JS调试工具.方法.优点与不足以及一些调试相关功能要点或策略,分享给同学们,只当抛砖引玉了,欢迎大家讨论补充. 一.Firebug:如果项目可 ...

  6. IE8"开发人员工具"使用详解下(浏览器模式、文本模式、JavaScript调试、探查器)

    来源: http://www.cnblogs.com/JustinYoung/archive/2009/04/03/kaifarenyuangongju2.html 在上一篇文章IE8“开发人员工具” ...

  7. IE11 F12 开发人员工具 查看 Cookie

    参考网址:Using the F12 developer tools in IE11 Step1 : IE11 => F12 打开 开发人员工具 Step2:开发人员工具 => 网络F5 ...

  8. 不仅仅是浏览器 走近Chrome开发人员工具

    Chrome浏览器以其简单.快速.安全.稳定.扩展丰富等特性受到了不少人的喜爱,除了这些特性,Chrome浏览器还提供了非常简单方便的开发人员工具,可以为开发提高效率,加上Chrome浏览器对HTML ...

  9. IE的F12开发人员工具不显示问题

    按下F12之后,开发人员工具在桌面上看不到,但是任务栏里有显示.将鼠标放在任务栏的开发人员工具上,出现一片透明的区域,选中之后却出不来.将鼠标移动到开发人员工具的缩略图上,右键-最大化,工具就全屏出现 ...

随机推荐

  1. [转帖]Introduction to Linux monitoring and alerting

    Introduction to Linux monitoring and alerting https://www.redhat.com/sysadmin/linux-monitoring-and-a ...

  2. [转帖]【MySQL+keepalived】用keepalived实现MySQL主主模式的高可用

    [MySQL+keepalived]用keepalived实现MySQL主主模式的高可用 https://www.jianshu.com/p/8694d07595bc 一.实验说明 MySQL主主模式 ...

  3. 《Redis Mysql 双写一致性问题》

    一:序 - 最近在对数据做缓存时候,会涉及到如何保证 数据库/Redis 一致性问题. - 刚好今天来总结下 一致性问题 产生的问题,和可能存在的解决方案. 二:(更新策略)-  先更新数据库,后更新 ...

  4. tomcat-修改端口--号

    1.背景 在默认情况下,tomcat的端口是8080,使用了两个tomcat,那么就需要修改其中的一个的端口号才能使得两个同时工作. 2.方法 2.1改动一 那么,如何修改tomcat的端口号呢?首先 ...

  5. bzoj 4500 矩阵 题解

    题意: 有一个 $ n * m $ 的矩阵,初始每个格子的权值都为 $ 0 $,可以对矩阵执行两种操作: 选择一行,该行每个格子的权值加1或减1. 选择一列,该列每个格子的权值加1或减1. 现在有 $ ...

  6. Js学习03--数据类型

    一.数据类型 1.Js中常用的数据类型 简单数据类型 Number 数字类型 String   字符串类型 Boolean  布尔类型 Undefined  变量未初始化 Null  空类型 复杂数据 ...

  7. 【转载】终于有人把“TCC分布式事务”的实现原理讲明白了

    之前网上看到很多写分布式事务的文章,不过大多都是将分布式事务各种技术方案简单介绍一下.很多朋友看了还是不知道分布式事务到底怎么回事,在项目里到底如何使用. 所以这篇文章,就用大白话+手工绘图,并结合一 ...

  8. 解决Ubuntu 16.04 环境下Python 无法显示中文的问题

    一.下载中文字体(https://pan.baidu.com/s/1EqabwENMxR2WJrHfKvyrIw 这里下载多是SImhei字体) 安装字体:解压:unzip SimHei.zip拷贝字 ...

  9. Disruptor分布式id生成策略

    需要的pom文件: <!-- 顺序UUID --> <dependency> <groupId>com.fasterxml.uuid</groupId> ...

  10. CAS 5.x搭建常见问题系列(1).未认证的授权服务

    错误内容 错误信息如下: 未认证授权的服务 CAS的服务记录是空的,没有定义服务.希望通过CAS进行认证的应用程序必须在服务记录中明确定义 错误原因 CAS 5.x 默认情况下不支持HTTP的客户端接 ...