Thymeleaf 之 使用devtools热启动、热部署

时间:2022-09-16 21:57:28

本文章来自【知识林】

Springboot+Thymeleaf的开发过程中,默认情况下修改到任何代码都需要重新启动项目才能生效,相信有过开发经验的人都会知道这是一件非常痛苦且非常浪费时间的事情,多么希望能够在修改html、css、js这些文件后刷新页面就能显示修改后的效果。

在网上找了很多热启动、热部署的文档,基本都是一样的,都是叫将spring.thymeleaf.cache设置为false,但根本不够详情,按照所描述的方法很难实现热启动。下面介绍一下使用spring.thymeleaf.cachedevtools来解决html热启动的问题。

  • 准备工作

所有代码都可以直接拷贝上一篇文章《Thymeleaf 之 HelloWorld》

在html页面中如果将<h1>Hello : <b th:text="${name}">姓名</b></h1>修改为<h1>你好 : <b th:text="${name}">姓名</b></h1>,刷新页面是没有任何改变的,只是重新启动项目页面才会由Hello : 知识林变成:你好 : 知识林

  • spring.thymeleaf.cache=false方式

    1. application.properties中加入配置:spring.thymeleaf.cache=false

    2. 运行入口函数:启动RootApplication里的main函数,启动成功后再停止(这步只需要执行一次即可,如果直接执行第三步将无法热启动);

    3. 使用maven方式启动:mvn spring-boot:run

  • 使用devtools方式

增加maven的devtools依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>

增加maven插件

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

注意:<optional>true</optional>只有设置为true时才会热启动,即当修改了html、css、js等这些静态资源后不用重启项目直接刷新即可。

如果需要在修改java文件后都能自动更新,则需要做一点小改动:

将:

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

修改为:

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>

配置了<fork>true</fork>后在修改java文件后也就支持了热启动,不过这种方式是属于项目重启(速度比较快的项目重启),会清空session中的值,也就是如果有用户登陆的话,项目重启后需要重新登陆。

本文章来自【知识林】