springboot-dev-tools
Springboot开发者工具
Spring Boot 包含一组额外的工具,可以使应用程序开发体验更加愉快。 spring-boot-devtools 模块可以包含在任何项目中,以提供额外的开发时功能。 要包含 devtools 支持,请将模块依赖项添加到您的构建中,如以下 Maven 和 Gradle 清单所示:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
dependencies {
developmentOnly("org.springframework.boot:spring-boot-devtools")
}
运行完全打包的应用程序时,devtools会自动禁用
如果程序是从 java -jar或者如果它是从一个特殊的类加载器启动的,那么它被认为是一个“生产应用程序”
可以使用yml配置spring.devtools.restart.enabled
属性启用 devtools,
无论用于启动应用程序的类加载器如何,请设置-Dspring.devtools.restart.enabled=true
系统属性
不能在存在安全风险的生产环境运行devtools
要禁用 devtools,请排除依赖项或设置-Dspring.devtools.restart.enabled=false
系统属性。
在 Maven 中将依赖项标记为<optional>true</optional>
或Gradle中的配置使用developmentOnly
可防止 devtools
被传递地应用于使用您项目的其他模块。
默认情况下,重新打包的 archives 不包含devtools。如果要使用某个远程devtools功能,则需要将其包括在内
使用Maven插件时,将excludeDevtools
属性设置为false
。使用Gradle插件时,将任务的类路径配置为包含developmentOnly
配置。
属性默认值
Spring Boot 支持的几个库使用缓存来提高性能。 例如, 模板引擎 缓存已编译的模板以避免重复解析模板文件。 此外,Spring MVC 可以在提供静态资源时向响应添加 HTTP 缓存标头。
虽然缓存在生产中非常有益,但在开发过程中可能会适得其反,使您无法看到刚刚在应用程序中所做的更改。 出于这个原因, spring-boot-devtools 默认禁用缓存选项。
缓存选项通常由您的 application.properties文件。 例如,Thymeleaf 提供 spring.thymeleaf.cache财产。 无需手动设置这些属性, spring-boot-devtools模块自动应用合理的开发时配置。
由于您在开发 Spring MVC 和 Spring WebFlux 应用程序时需要更多有关 Web 请求的信息,因此开发人员工具将启用 DEBUG日志记录 web日志组。 这将为您提供有关传入请求、正在处理它的处理程序、响应结果等的信息。 如果您希望记录所有请求详细信息(包括潜在的敏感信息),您可以打开 spring.mvc.log-request-details或者 spring.codec.log-request-details配置属性。
如果您不想应用属性默认值,您可以设置 spring.devtools.add-properties到 false在你的 application.properties.
有关由 devtools 应用的属性的完整列表,请参阅 [DevToolsPropertyDefaultsPostProcessor](https://github.com/spring-projects/spring-boot/tree/v2.4.9/spring-boot-project/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/env/DevToolsPropertyDefaultsPostProcessor.java) 。
自动重启
实时重载
全局设置
远程应用程序
devtools默认会禁用Springboot的缓存
如果不想使用默认值可以在application配置文件中添加spring.devtools.add-properties=false
设置自动重启
devtools
因为 DevTools 会监控类路径资源,触发重启的唯一方法是更新类路径
更新类路径的方式取决于你使用的IDE开发工具
在 Eclipse 中,保存修改后的文件会导致更新类路径并触发重新启动
在 IntelliJ IDEA 中,构建项目( Build -> Build Project) 具有相同的效果。
排除资源
一些资源在更改的时候不一定需要触发重启 eg: 可以随时编辑的thymeleaf模板
默认情况下,更改资源 /META-INF/maven
, /META-INF/resources
, /resources
, /static
, /public
, /templates
时不会触发重新启动,但是会触发重新加载 如果要自定义排除这些选项,可以使用spring.devtools.restart.exclude
来排除
eg: spring.devtools.restart.exclude=static/**,public/**
配置排除了类路径下static与public文件夹下的所有文件
若需要保留默认值,并添加其他排除选项可以使用配置spring.devtools.restart.additional-exclude
来代替
监测其他非类路径
可以使用spring.devtools.restart.additional-paths
配置检测此路径下文件的改动