Spring Boot支持热插拔。本部分回答有关其工作方式的问题。

15.1. 重新加载静态内容

有几种热重装选项。推荐的方法是使用spring-boot-devtools,因为它提供了其他开发时功能,例如支持快速应用程序重新启动和LiveReload以及合理的开发时配置(例如模板缓存)。Devtools通过监视类路径的更改来工作。这意味着必须“构建”静态资源更改才能使更改生效。默认情况下,当您保存更改时,这会自动在Eclipse中发生。在IntelliJ IDEA中,“生成项目”命令将触发必要的构建。由于默认的重新启动排除项,对静态资源的更改不会触发应用程序的重新启动。但是,它们确实会触发实时重新加载。
另外,在IDE中运行(特别是在调试时运行)是进行开发的好方法(所有现代IDE都允许重新加载静态资源,并且通常还允许热交换Java类更改)。
最后,可以配置Maven和Gradle插件(请参阅addResources属性)以支持从命令行运行,并直接从源中重新加载静态文件。如果要使用高级工具编写该代码,则可以将其与外部css / js编译器进程一起使用。

15.2. 重新加载模板而无需重新启动容器

Spring Boot支持的大多数模板技术都包含一个用于禁用缓存的配置选项(本文档后面将介绍)。如果使用spring-boot-devtools模块,则在开发时会自动为您配置这些属性。

15.2.1. 胸腺模板

如果您使用Thymeleaf,请将设置spring.thymeleaf.cachefalse。有关ThymeleafAutoConfiguration其他Thymeleaf定制选项,请参见。

15.2.2. FreeMarker模板

如果使用FreeMarker,请设置spring.freemarker.cachefalse。有关FreeMarkerAutoConfiguration其他FreeMarker定制选项,请参见。

15.2.3. Groovy模板

如果您使用Groovy模板,请设置spring.groovy.template.cachefalse。请参阅参考资料,GroovyTemplateAutoConfiguration以获取其他Groovy定制选项。

15.3. 快速应用重启

spring-boot-devtools模块包括对应用程序自动重启的支持。尽管不如JRebel这样的技术快,但通常比“冷启动”要快得多。在研究本文档后面讨论的一些更复杂的重载选项之前,您可能应该先尝试一下。
有关更多详细信息,请参见using-spring-boot.html部分。

15.4. 重新加载Java类而无需重新启动容器

许多现代的IDE(Eclipse,IDEA等)都支持字节码的热交换。因此,如果所做的更改不影响类或方法的签名,则应干净地重新加载而没有副作用。