Hot Swapping
Spring Boot 支持热交换。本部分回答有关其工作原理的问题。
Reload Static Content
热加载有几种选项。建议的方法是使用 spring-boot-devtools
,因为它提供额外的开发时间特性,例如支持快速应用程序重新启动和 LiveReload 以及合理开发现时间配置(例如,模板缓存)。Devtools 的工作原理是监视类路径以查找更改。这意味着需要对静态资源更改进行“构建”才能使更改生效。在您保存更改时,Eclipse 中默认会自动执行此操作。在 IntelliJ IDEA 中,“创建项目”命令会触发必要的构建。由于 default restart exclusions,对静态资源所做的更改不会触发应用程序的重新启动。但是,它们会触发实时重新加载。
另外,在 IDE 中运行(尤其是调试模式开启时)是进行开发的一种好方法(所有现代化的 IDE 都允许重新加载静态资源,通常也允许热交换 Java 类更改)。
最后,Maven and Gradle plugins 可以进行配置(请参阅 addResources
属性)以支持直接从源代码重新加载静态文件,从而支持从命令行运行。如果您使用更高级别的工具编写代码,则可以将其与外部 css/js 编译器进程一起使用。
Reload Templates without Restarting the Container
Spring Boot 支持的大多数模板化技术都包括一个配置选项,用于禁用缓存(稍后在本文档中描述)。如果您使用 spring-boot-devtools
模块,则这些属性在开发时间会自动 automatically configured 给您。
Thymeleaf Templates
如果您使用 Thymeleaf,请将 spring.thymeleaf.cache
设置为 false
。请参阅 {code-spring-boot-autoconfigure-src}/thymeleaf/ThymeleafAutoConfiguration.java[ThymeleafAutoConfiguration
] 了解其他 Thymeleaf 自定义选项。
Fast Application Restarts
spring-boot-devtools
模块包括自动应用程序重启支持。虽然不像 JRebel 等技术那样快,但通常比 “cold start” 快得多。在研究本文后面讨论的一些更复杂的重新加载选项之前,你应该先尝试一下。
有关更多详细信息,请参阅 Developer Tools 部分。