Spring Boot 2系列(十五):热部署

Spring Boot 开发环境支持热部署,即修改代码后保存后,自动编译运行服务。不用每次手动重启服务。

此篇是作为Spring Boot实践系列(三):打war包部署到外部TomcatSpring Boot实践系列(十四):配置文件profile属性和部署jar包的延续。

引入devtools

Spring Boot 支持热部署,官方提供了热部署的模块spring-boot-devtools,如需在项目pom.xml文件添加该依赖。

1
2
3
4
5
6
<!-- 热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>

热部署在开发环境非常的方便高效,不用手动编译重启。而在生产中大多是直接更新整个jar包的情况比较多,可以在热部署依赖配置添加作用范围<scope>provided</scope>

spring-boot-devtools是监视类路径下的文件发生更改时就重启应用,某些资源文件(如静态资源文件和视图模板)的更改是不会重启应用的。

还有一些其它热部署的组件,如 Spring Loaded, JRebel(收费)。

IDEA开启自动编译

【Settings】>【Build, Execution, Deployment】> 【Compiler】 > 勾选:Build project automatically,【保存】

模板缓存配置

Spring Boot 支持的一些库使用了缓存来提高性能,例如,模板引擎缓存已编译的模板以避免重复解析模板文件。缓存静态资源在生产中非常有用,但在开发中会造成不便,在修改静态资源文件后得不到想要的更新后的内容。而spring-boot-devtools默认是禁用缓存的,所以推荐使用devtools来做开发环境的热部署,就不用针对单项功能去控制缓存的启用/禁用

当然 Spring Boot 也支持缓存选项的设置,通常在application.properties文件中进行配置,也可在开发配置文件和生产配置文件分别配置,如下:

1
2
3
4
5
6
7
8
# Thymeleaf Templates 
spring.thymeleaf.cache = false|true

# FreeMarker Templates
spring.freemarker.cache = false|true

# Groovy Templates
spring.groovy.template.cache = false|true
作者

光星

发布于

2018-06-13

更新于

2022-07-18

许可协议

评论