热插拔

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

快速应用程序重启

spring-boot-devtools 模块包含对应用程序自动重启的支持。虽然不如 JRebel 等技术快,但通常比“冷启动”快得多。在研究本文档稍后讨论的一些更复杂的重新加载选项之前,您应该尝试一下。

有关更多详细信息,请参见 开发人员工具 部分。

不重启容器重新加载 Java 类

许多现代 IDE(Eclipse、IDEA 等)都支持字节码的热插拔。因此,如果您进行的更改不影响类或方法签名,它应该能够干净地重新加载,并且没有副作用。

© . This site is unofficial and not affiliated with VMware.