热交换

Spring Boot支持热插拔。本节将解答其工作原理的问题。spring-doc.cadn.net.cn

重新加载静态内容

热装填有多种选择。推荐的方法是Spring-boot-devtools,因为它提供了额外的开发阶段功能,如支持快速应用重启和LiveReload,以及合理的开发阶段配置(如模板缓存)。Devtools 的工作原理是监控类路径中的变更。这意味着静态资源更改必须被“构建”才能生效。默认情况下,当你保存更改时,Eclipse 会自动生成。在 IntelliJ IDEA 中,Make Project 命令触发必要的构建。由于默认的重启排除,对静态资源的更改不会触发应用程序的重启。但它们会触发一次实时重载。spring-doc.cadn.net.cn

另外,在IDE中运行(尤其是开启调试时)是进行开发的好方法(所有现代IDE都允许重新加载静态资源,通常还支持对Java类更改的热插拔)。spring-doc.cadn.net.cn

最后,还可以配置 Maven 和 Gradle 插件(参见addResources属性)支持从命令行运行,并直接从源码重新加载静态文件。如果你用高级工具编写代码,可以搭配外部CSS/js编译进程使用。spring-doc.cadn.net.cn

无需重启容器即可重新加载模板

Spring Boot 支持的大多数模板技术都包含一个配置选项,可以禁用缓存(本文后面会详细说明)。如果你使用Spring-boot-devtools这些属性在开发时会自动为你配置spring-doc.cadn.net.cn

Thymeleaf 模板

如果你用百里梅叶,设置Spring.百里香叶.缓存false. 看ThymeleafAutoConfiguration用于其他Thymeleaf定制选项。spring-doc.cadn.net.cn

FreeMarker 模板

如果你用FreeMarker,设置spring.freemarker.cachefalse. 看FreeMarkerAutoConfiguration用于其他FreeMarker定制选项。spring-doc.cadn.net.cn

FreeMarker 的模板缓存不支持 WebFlux。

Groovy 模板

如果你用Groovy模板,设置春.groovy.模板.缓存false. 看GroovyTemplateAutoConfiguration用于其他Groovy定制选项。spring-doc.cadn.net.cn

快速应用重启

Spring-boot-devtools该模块支持自动应用重启。虽然不如JRebel等技术快,但通常比“冷启动”快得多。你最好先试试,再去研究本文后面讨论的一些更复杂的重载选项。spring-doc.cadn.net.cn

更多详情请参见开发者工具部分。spring-doc.cadn.net.cn

在不重启容器的情况下重新加载 Java 类

许多现代IDE(Eclipse、IDEA等)都支持字节码的热插拔。因此,如果你所做的更改不影响类或方法签名,应该能干净利落地重新加载,没有任何副作用。spring-doc.cadn.net.cn