Spring Boot 包含了一些额外的工具集,用于提升 Spring Boot 应用的开发体验。
spring-boot-devtools 模块可以包含到到任何模块中,以提供开发调试特性,你只需简单的将该模块的依赖添加到 POM 中:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> </dependencies>
在运行一个完整的应用时(正式打包)开发者工具(spring-boot-devtools)会被自动禁用。
如果应用使用 java -jar 或特殊的类加载器启动,都会被认为是一个产品级的应用(production application),从而将禁用开发者工具。
为了防止 spring-boot-devtools 的 jar 被复制到项目中的其他模块,设置该依赖级别为 optional 是个不错的实践。不过Gradle 不支持 optional 依赖(你可以了解 propdeps-plugin 插件)。
如果想确保 spring-boot-devtools 绝对不会包含在一个产品级构建中,你可以使用 excludeDevtools 构建属性彻底移除该 jar,Maven 和 Gradle 都支持该属性。例如:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> <excludeDevtools>true</excludeDevtools> </configuration> </plugin>
Spring Boot 支持的一些库可以使用缓存提高性能,比如:Thymeleaf 将缓存模板以避免重复解析 XML 源文件。虽然缓存在生产环境很有用,但开发期间就是个累赘。如果在 IDE 里修改了模板,你可能会想立即看到结果。要实现这个功能,可以通过 spring.thymeleaf.cache 属性取消 Thymeleaf 的缓存功能。
缓存选项通常配置在 application.properties 或 application.yml 文件中。
例如:Thymeleaf 提供了 spring.thymeleaf.cache 属性,spring-boot-devtools 模块会自动应用这些敏感的开发调试配置,而不是手动设置这些属性。