热替换
Spring Boot 支持热替换。 本节解答其工作原理相关的问题。
重新加载静态内容
热重载有多种选择。
推荐方式是使用 spring-boot-devtools
,它提供了额外的开发时特性,如快速应用重启、LiveReload 以及合理的开发时配置(如模板缓存)。
Devtools 通过监控 classpath 变更实现工作。
这意味着静态资源的变更必须经过“构建”才能生效。
默认情况下,在 Eclipse 中保存更改时会自动完成此操作。
在 IntelliJ IDEA 中,使用 Make Project 命令触发所需的构建。
由于 默认重启排除项,对静态资源的更改不会触发应用重启。
但它们会触发 live reload。
另外,在 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
。