28、springboot的静态模版(前端页面)重加载和 devtools开发者工具

springboot的静态模版重加载和 devtools开发者工具

总结:实现静态模板重加载的两个方法
方法1:在 yml 配置文件,关闭页面模板缓存, 再按 ctrl+f9 重新构建
方法2:直接添加 devtools 依赖,再按 ctrl+f9 重新构建

★ 热插拔

所谓热插拔,其实就是让开发者能实时看到代码修改后的结果。

热插拔是实际开发中非常重要的一个支持。

——如果没有热插拔,意味着开发者无论做了多小的修改,必须等待程序重启后才能看到结果。


hot swap——很多翻译为热交换。

★ 最基础的要求——静态模板的重加载。

要求:当开发者修改了应用的静态模板页面(Thymeleaf、freemarker、groovy template、mustache)。

只要关闭静态页面模板的缓存即可:

在yml配置文件中,各个静态页面模板对应的关闭页面缓存的配置代码:

 spring.thymeleaf.cache=false            #  Thymeleaf模
 spring.freemarker.cache=false           # FreeMarker模板
 spring.groovy.template.cache=false      # Groovy模板
 spring.mustache.template.cache=false    # Mustache模板


▲ 静态模板重加载的注意事项

Spring Boot通过监测类加载路径下文件的改变来实现模板的重加载。

 换而言之:如果类加载路径下(classes目录)的文件没有改变,那Spring Boot就不会触发静态模板的重加载

 如果只是更改了静态资源(比如图片、CSS样式单等),由于它们都不在项目的类加载路径下,
 因此它们都不会触发Spring Boot重加载静态资源。

▲ 由于Eclipse默认开启了自动构建, 因此保存模板页面后会触发重加载;

 保存页面模板 --> 自动构建 --> 类加载路径下文件发生变化 --> Spring Boot静态模板重加载

▲ 由于IDEA默认没有开启自动构建,因此要么先启用自动构建,要么每次修改页面模板后按Ctrl + F9构建项目来触发模板的重加载。

 保存页面模板(src文件发生了改变) --> 没有自动构建 --> 类加载路径下文件没有变化 --> 不触发Spring Boot静态模板重加载

 要么先启用自动构建;要么每次修改页面模板后按Ctrl + F9来构建项目,即可让静态页面重加载。

代码演示:

需求:如果前端使用到 Thymeleaf模板,然后我们在修改前端页面的时候,每次修改后想直接按浏览器的刷新就可以刷新到最新修改的页面,而不用每次都重启项目。

只需要在yml配置文件中添加一些关闭静态页面模板的缓存即可:
如:使用了 Thymeleaf模板,那么在yml配置文件中添加这个 spring.thymeleaf.cache=false配置就可以了,然后 IDEA 需要再按 按Ctrl + F9来构建项目,就可以在静态页面冲加载。

28、springboot的静态模版(前端页面)重加载和 devtools开发者工具_第1张图片

如果使用开发者工具 spring-boot-devtools ,那么就需要上图那样在yml关闭模板缓存了,这个devtools 已经帮我们完成这些功能了。

直接添加devtools依赖就可以了,就不用在yml配置文件里面关闭模板缓存了。
但是都需要按 Ctrl + F9 来构建一下
28、springboot的静态模版(前端页面)重加载和 devtools开发者工具_第2张图片

★ 开发者工具

spring-boot-devtools开发者工具具有如下功能:

- 模板自动重加载, 默认就关闭静态的缓存。也就是上面的设置完全可以省略。

- 应用快速重启

- 浏览器实时重加载(LiveReload)

- 各种开发时配置属性(如前面介绍的关闭模板缓存等)

- 将Web日志组(包括Spring MVC和Spring WebFlux)设为DEBUG级别

——上面这些功能,基本上都是为Spring Boot热插拔在提供支持。

★ 开发者工具的注意点

▲ 项目只要添加devtools依赖包,则自动启用devtools开发者工具。

▲ 如果以java -jar xxx.jar的形式运行Spring Boot项目,则默认被当成产品场。

  此时即使项目中包含devtools依赖包,也会自动关闭devtools开发者工具。

  可通过如下系统属性强行启用开发者工具:
  -Dspring.devtools.restart.enabled=true

▲ 为避免安全隐患,打包Spring Boot应用时会自动排除devtools工具。

  如要远程使用devtools功能,这时就需要强制将devtools工具打包进去,

  - 对于Maven构建工具,则需将excludeDevtools属性设为false即可

  - 对于Gradle工具,则需要指定包含developmentOnly依赖库。

你可能感兴趣的:(springboot,spring,boot,前端,后端)