本文章来自【知识林】
在Springboot+Thymeleaf的开发过程中,默认情况下修改到任何代码都需要重新启动项目才能生效,相信有过开发经验的人都会知道这是一件非常痛苦且非常浪费时间的事情,多么希望能够在修改html、css、js这些文件后刷新页面就能显示修改后的效果。
在网上找了很多热启动、热部署的文档,基本都是一样的,都是叫将spring.thymeleaf.cache
设置为false
,但根本不够详情,按照所描述的方法很难实现热启动。下面介绍一下使用spring.thymeleaf.cache
和devtools
来解决html热启动的问题。
- 准备工作
所有代码都可以直接拷贝上一篇文章《Thymeleaf 之 HelloWorld》。
在html页面中如果将<h1>Hello : <b th:text="${name}">姓名</b></h1>
修改为<h1>你好 : <b th:text="${name}">姓名</b></h1>
,刷新页面是没有任何改变的,只是重新启动项目页面才会由Hello : 知识林
变成:你好 : 知识林
。
-
spring.thymeleaf.cache=false
方式在
application.properties
中加入配置:spring.thymeleaf.cache=false
;运行入口函数:启动
RootApplication
里的main
函数,启动成功后再停止(这步只需要执行一次即可,如果直接执行第三步将无法热启动);使用
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
中的值,也就是如果有用户登陆的话,项目重启后需要重新登陆。
本文章来自【知识林】