热插拔
Spring Boot 支持热插拔。本节回答了有关其工作原理的问题。
重新加载静态内容
有多种热重载选项。推荐的方法是使用 spring-boot-devtools,因为它提供了额外的开发时功能,例如支持快速应用程序重启和 LiveReload,以及合理的开发时配置(例如模板缓存)。Devtools 通过监视 classpath 的更改来工作。这意味着静态资源更改必须经过“构建”才能生效。默认情况下,在 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。