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来构建项目,就可以在静态页面冲加载。

如果使用开发者工具 spring-boot-devtools ,那么就需要上图那样在yml关闭模板缓存了,这个devtools 已经帮我们完成这些功能了。
直接添加devtools依赖就可以了,就不用在yml配置文件里面关闭模板缓存了。
但是都需要按 Ctrl + F9 来构建一下

★ 开发者工具
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依赖库。
相关文章:
28、springboot的静态模版(前端页面)重加载和 devtools开发者工具
springboot的静态模版重加载和 devtools开发者工具 总结:实现静态模板重加载的两个方法 方法1:在 yml 配置文件,关闭页面模板缓存, 再按 ctrlf9 重新构建 方法2:直接添加 devtools 依赖,再按 ctrlf9 重新构…...
[FPGA IP系列] FPGA常用存储资源大全(RAM、ROM、CAM、SRAM、DRAM、FLASH)
本文主要介绍FPGA中常用的RAM、ROM、CAM、SRAM、DRAM、FLASH等资源。 一、RAM RAM(Random Access Memory)是FPGA中最基本和常用的内部存储块,根据不同架构可以实现不同容量,最大可达几十Mb。 FPGA中的RAM主要包括: 分布式RAM:存在于逻辑块…...
Spark SQL优化:NOT IN子查询优化解决
背景 有如下的数据查询场景。 SELECT a,b,c,d,e,f FROM xxx.BBBB WHERE dt ${zdt.addDay(0).format(yyyy-MM-dd)} AND predict_type not IN ( SELECT distinct a FROM xxx.AAAAAWHERE dt ${zdt.addDay(0).format(yyyy-MM-dd)} ) 分析 通过查看SQL语句的执行计划基本…...
代码审计-java项目-组件漏洞审计
代码审计必备知识点: 1、代码审计开始前准备: 环境搭建使用,工具插件安装使用,掌握各种漏洞原理及利用,代码开发类知识点。 2、代码审计前信息收集: 审计目标的程序名,版本,当前环境(系统,中间件…...
接口测试的测试用例该怎么写呢
接口测试是软件测试中非常重要的一部分,因为接口的稳定性和可靠性对于整个系统的质量和用户体验都有很大的影响。在接口测试中,编写有效的测试用例是非常关键的一步。本文将介绍如何编写接口测试的测试用例,包括测试用例的设计和编写方法&…...
C语言例题讲解(if语句,循环语句,函数)
目录 if语句例题题目分析代码题目总结 循环语句例题题目分析代码题目总结 函数例题题目分析代码题目总结 if语句例题 计算1/1-1/21/3-1/41/5 …… 1/99 - 1/100 的值,打印出结果题目分析 1:首先我们不难看出算式中的加号和减号是交替出现的࿰…...
深入探索JavaEE单体架构、微服务架构与云原生架构
课程链接: 链接: https://pan.baidu.com/s/1xSI1ofwYXfqOchfwszCZnA?pwd4s99 提取码: 4s99 复制这段内容后打开百度网盘手机App,操作更方便哦 --来自百度网盘超级会员v4的分享 课程介绍: 🔍【00】模块零:开营直播&a…...
【STM32】FreeRTOS互斥量学习
互斥量(Mutex) 互斥量又称互斥信号量(本质也是一种信号量,不具备传递数据功能),是一种特殊的二值信号量,它和信号量不同的是,它支持互斥量所有权、递归访问以及防止优先级翻转的特性…...
Docker容器基础
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、Docker概述1、docker是什么2、Docker的设计宗旨3、容器在内核中支持2种重要技术: 三、Docker的核心概念四、Docker相关命令1.安装依赖包2.设置阿里云…...
Ajax及前端工程化
Ajax:异步的js与xml。 作用: 1、通过ajax给服务器发送数据,并获得其响应的数据。 2、可以在不更新整个网页的情况下,与服务器交换数据并更新部分网页的技术。 一、同步与异步 二、原生Ajax 1、准备数据地址 2、创建XMLHttpReq…...
electron的使用和操作
文章目录 先创建一个基本的electron应用electron生命周期事件 先创建一个基本的electron应用 先安装 npm install --save-dev electron然后在package.json里面创建如下内容 {"name": "my-electron-app","version": "1.0.0","d…...
Python最重要的数据结构是列表(list)的使用方法
列表是一种有序的集合,可以包含任意类型的元素,包括数字、字符串、布尔值、元组等。列表使用方括号[]来表示,元素之间用逗号,分隔。 以下是一些使用列表的例子: 1. 创建一个空列表: my_list []2. 创建一个包含元素的…...
二开ChatGPT微信小程序源码 AI聊天微信小程序源码 适配H5和WEB端 支持AI聊天次数限制
ChatGPT-MP是一款基于的微信小程序,同时适配H5和WEB端。它提供了前后台二开的能力,支持打字效果的流式输出,以及限制AI聊天次数和分享增加次数等功能。该开源版本仅供学习交流使用,禁止商业用途和倒卖。感谢大家的关注与支持!技术栈方面,我们使用了JDK8、SpringBoot、Vue…...
VGG简单学习
VGG简单学习 简单介绍 在AlexNet网络的基础上,为了设计深层神经网络,牛津大学设计了VGG网络,采用块的设计理念,将AlexNet中多个重复的卷积层和池化层组成一个块 论文中,使用3x3卷积核,padding1的卷积层 和带有2x2的汇…...
Stable Diffusion - 人物坐姿 (Sitting) 的提示词组合 与 LoRA 和 Embeddings 配置
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/132201960 拍摄人物坐姿时,需要注意: 选择一个舒适和自然的坐姿,符合个性和心情。可以坐在椅子、沙发、长凳、…...
[oneAPI] 手写数字识别-GAN
[oneAPI] 手写数字识别-GAN 手写数字识别参数与包加载数据模型训练过程结果 oneAPI 比赛:https://marketing.csdn.net/p/f3e44fbfe46c465f4d9d6c23e38e0517 Intel DevCloud for oneAPI:https://devcloud.intel.com/oneapi/get_started/aiAnalyticsToolki…...
爬虫逆向实战(十五)--阿某某营登录
一、数据接口分析 主页地址:阿某某营 1、抓包 通过抓包可以发现登录接口是Users/Login 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现有一个s加密参数 请求头是否加密? 无响应是否加密? 无cookie是…...
【计组】校验码(奇偶校验码、海明校验码、CRC)
前言 1、小提示:本篇博文是参考王道,在复习 ASCII 码的基础上,总结校验码的相关学习知识点,并在最后搭配习题(含408真题)进行巩固练习。(对重点内容进行划线、标色) 2、适用人群&…...
File Inclusion
File Inclusion 服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行,这会为开发者节省大量的时间。这意味着您可以创建供所有网页引用的标准页眉或菜单文件。当页眉需要更新时,您只更新一个包含…...
函数性能探测:更简单高效的 Serverless 规格选型方案
作者:拂衣、丛霄 2019 年 Berkeley 预测 Serverless 将取代 Serverful 计算成为云计算新范式。Serverless 为应用开发提供了一种全新系统架构。借助 2023 年由 OpenAI 所带来的 AIGC 风潮,以阿里云函数计算 FC、AWS Lambda 为代表的 Serverless 以其更高…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
