热交换
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
。
注意:FreeMarker 的模板缓存不支持 WebFlux。
Groovy 模板
如果您使用 Groovy 模板,请将 spring.groovy.template.cache
设置为 false
。
有关其他 Groovy 自定义选项,请参见 GroovyTemplateAutoConfiguration
。