热替换

Spring Boot 支持热交换。 本节解答有关其工作原理的问题。spring-doc.cadn.net.cn

重新加载静态内容

热重载有几种可选方案。 推荐的方法是使用 spring-boot-devtools,因为它提供了额外的开发时功能,例如支持快速应用程序重启和 LiveReload,以及合理的开发时配置(如模板缓存)。 Devtools 通过监控类路径的变化来工作。 这意味着静态资源的更改必须经过“构建”才能生效。 默认情况下,在 Eclipse 中保存更改时会自动执行此操作。 在 IntelliJ IDEA 中,“Make Project”命令会触发必要的构建。 由于 默认的重新启动排除项,静态资源的更改不会触发应用程序的重新启动。 但是,它们会触发实时重载。spring-doc.cadn.net.cn

或者,在IDE中运行(尤其是在启用调试的情况下)是一种很好的开发方式(所有现代IDE都支持静态资源的重新加载,通常也支持Java类更改的热替换)。spring-doc.cadn.net.cn

最后,可以配置Maven 和 Gradle 插件(参见 addResources 属性),以支持从命令行运行时直接从源代码重新加载静态文件。 如果你使用更高级的工具编写 CSS/JS 代码,可以将其与外部的 CSS/JS 编译进程结合使用。spring-doc.cadn.net.cn

无需重启容器即可重新加载模板

Spring Boot 支持的大多数模板技术都包含一个用于禁用缓存的配置选项(本文档稍后会进行说明)。 如果您使用 spring-boot-devtools 模块,这些属性将在开发时为您自动配置spring-doc.cadn.net.cn

Thymeleaf 模板

如果您使用 Thymeleaf,请将 spring.thymeleaf.cache 设置为 false。 有关其他 Thymeleaf 自定义选项,请参阅 ThymeleafAutoConfigurationspring-doc.cadn.net.cn

FreeMarker 模板

如果您使用 FreeMarker,请将 spring.freemarker.cache 设置为 false。 有关其他 FreeMarker 自定义选项,请参阅 FreeMarkerAutoConfigurationspring-doc.cadn.net.cn

WebFlux 不支持 FreeMarker 的模板缓存。

Groovy 模板

如果您使用 Groovy 模板,请将 spring.groovy.template.cache 设置为 false。 有关其他 Groovy 自定义选项,请参阅 GroovyTemplateAutoConfigurationspring-doc.cadn.net.cn

快速应用程序重启

spring-boot-devtools 模块包含对应用程序自动重启的支持。 虽然它不如 JRebel 等技术那样快速,但通常比“冷启动”要快得多。 在深入研究本文档后面讨论的一些更复杂的热重载选项之前,你不妨先尝试一下它。spring-doc.cadn.net.cn

有关更多详细信息,请参阅开发者工具部分。spring-doc.cadn.net.cn

无需重启容器即可重新加载 Java 类

许多现代 IDE(如 Eclipse、IntelliJ IDEA 等)都支持字节码的热替换。 因此,如果你所做的更改不会影响类或方法的签名,那么它应该能够干净地重新加载,且不会产生副作用。spring-doc.cadn.net.cn