此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Boot 3.4.0! |
热插拔
Spring Boot 支持热插拔。 本节回答了有关其工作原理的问题。
重新加载静态内容
热重载有多种选择。
推荐的方法是使用spring-boot-devtools
,因为它提供了额外的开发时功能,例如支持快速应用程序重启和 LiveReload 以及合理的开发时配置(例如模板缓存)。
Devtools 通过监视 Classpath 的更改来工作。
这意味着必须 “构建” 静态资源更改才能使更改生效。
默认情况下,在 Eclipse 中,当您保存更改时,这会自动发生。
在 IntelliJ IDEA 中,Make Project 命令会触发必要的构建。
由于默认的重启排除项,对静态资源的更改不会触发应用程序的重启。
但是,它们确实会触发实时重新加载。
或者,在 IDE 中运行(尤其是在调试时)是进行开发的好方法(所有现代 IDE 都允许重新加载静态资源,通常还允许热交换 Java 类更改)。
最后,可以配置 Maven 和 Gradle 插件(参见属性)以支持从命令行运行,并直接从源重新加载静态文件。
如果您正在使用更高级别的工具编写该代码,则可以将其与外部 css/js 编译器进程一起使用。addResources
在不重新启动容器的情况下重新加载模板
Spring Boot 支持的大多数模板技术都包含一个用于禁用缓存的配置选项(本文档稍后将介绍)。
如果您使用该模块,则会在开发时自动为您配置这些属性。spring-boot-devtools
Thymeleaf 模板
如果使用 Thymeleaf,请设置为 。
有关其他 Thymeleaf 自定义选项,请参见ThymeleafAutoConfiguration
。spring.thymeleaf.cache
false
FreeMarker 模板
如果使用 FreeMarker,请设置为 .
有关其他 FreeMarker 自定义选项,请参阅 FreeMarkerAutoConfiguration
。spring.freemarker.cache
false
WebFlux 不支持 FreeMarker 的模板缓存。 |
Groovy 模板
如果使用 Groovy 模板,请设置为 。
有关其他 Groovy 自定义选项,请参见GroovyTemplateAutoConfiguration
。spring.groovy.template.cache
false
应用程序快速重启
该模块包括对应用程序自动重启的支持。
虽然不如 JRebel 等技术快,但它通常比“冷启动”快得多。
在研究本文档后面讨论的一些更复杂的重新加载选项之前,您可能应该先尝试一下。spring-boot-devtools
有关更多详细信息,请参阅 Developer Tools 部分。
在不重新启动容器的情况下重新加载 Java 类
许多现代 IDE(Eclipse、IDEA 等)都支持字节码的热交换。 因此,如果您所做的更改不会影响类或方法签名,它应该会干净地重新加载,而不会产生任何副作用。