|
如需获取最新稳定版本,请使用 Spring Boot 4.0.4! |
热替换
Spring Boot 支持热交换。 本节回答有关其工作原理的问题。
重新加载静态内容
热重载有几种选项。
推荐的方法是使用 spring-boot-devtools,因为它提供了额外的开发时功能,例如支持快速应用程序重启和 LiveReload,以及合理的开发时配置(如模板缓存)。
Devtools 通过监控类路径的变化来工作。
这意味着静态资源的更改必须“构建”才能生效。
默认情况下,在 Eclipse 中保存更改时会自动发生这种情况。
在 IntelliJ IDEA 中,“Make Project”命令会触发必要的构建。
由于 默认的重启排除项,静态资源的更改不会触发应用程序的重启。
但是,它们会触发实时重载。
或者,在 IDE 中运行(尤其是启用调试功能时)是进行开发的好方法(所有现代 IDE 都允许重新加载静态资源,并且通常还允许热替换 Java 类的更改)。
最后,可以配置 Maven 和 Gradle 插件(参见 addResources 属性)以支持从命令行运行,并直接从源代码重新加载静态文件。
如果您使用更高层次的工具编写这些代码,可以将其与外部 css/js 编译器进程一起使用。
无需重启容器即可重新加载模板
Spring Boot 支持的大多数模板技术都包含一个配置选项,可用于禁用缓存(在本文档后面有详细说明)。
如果您使用 spring-boot-devtools 模块,这些属性会在开发时自动为您配置。
Thymeleaf 模板
如果您使用 Thymeleaf,请将 spring.thymeleaf.cache 设置为 false。
有关其他 Thymeleaf 自定义选项,请参阅 ThymeleafAutoConfiguration。
FreeMarker 模板
如果您使用 FreeMarker,请将 spring.freemarker.cache 设置为 false。
有关其他 FreeMarker 自定义选项,请参阅 FreeMarkerAutoConfiguration。
| WebFlux 不支持 FreeMarker 的模板缓存。 |
Groovy 模板
如果您使用 Groovy 模板,请将 spring.groovy.template.cache 设置为 false。
有关其他 Groovy 自定义选项,请参阅 GroovyTemplateAutoConfiguration。
无需重启容器即可重新加载 Java 类
许多现代的集成开发环境(如 Eclipse、IDEA 等)支持字节码热替换。 因此,如果你所做的修改不涉及类或方法签名的变更,应该能够干净地重新加载而不会产生副作用。