30、devtools 依赖关于自动重启(自动加载页面)的知识
devtools 依赖关于自动重启的知识
★ 自动重启
devtools会监控类加载路径中的文件(尤其是*.class文件),只要这些文件发生了改变,
devtools就会自动重启Spring Boot应用。▲ 不同工具触发自动重启的方式:Eclipse(默认开启了自动构建),只要保存修改后的文件就会触发自动重启。IDEA(默认关闭了自动构建),保存文件后,必须运行“Build → Build Project”(或Ctrl + F9)才会触发自动重启。
当然也可选择为IDEA开启自动构建。若使用Maven构建,保存文件后运行“mvn compile”命令触发自动重启;若使用Gradle构建,保存文件后运行“gradle build”命令触发自动重启。——总之一条:你仅仅修改、保存了Java源代码,devtools是不会触发自动重启的。只有当你的类加载路径下的文件发生了改变时,devtools才会触发自动重启。【总结】:如果你修改并保存了Java代码,如果你想立即看到修改后的结果- 对于Eclipse,Eclipse会自动重启项目,因此可立即看到修改结果。- 对于IDEA,必须按下Ctrl+F9来重新构建项目,这样才会触发自动重启。然后可立即看到修改结果。
★ 自动重启的实现方式:
devtools依赖于Spring容器的关闭钩子(shutdown hook)来关闭应用、实现自动重启。devtools的自动重启是通过“双类加载器”来实现的:- 其中base类加载器负责加载那些无需改变的类(如从第三方JAR包加载的类)。- restart类加载器负责加载那些需要变化的类(项目中开发的类)。自动重启时,base类加载器保持不变、继续复用;restart类加载器则要重新创建、并加载所有可能改变的类,原有的restart类加载器被直接抛弃。【说明】:自动重启(热启动)时,保证了开发过程中的所有类都能得到更新;但第三框架的类依然依然保留原有的,无需重新加载 。自动重启比直接冷启动的速度要快。▲ 自动重启的替换选项:实时reload技术,比如JRebel——它可以在reload时重写发生了修改的类。JRebel是个商业软件。
★ 自动重启的触发目录
默认情况下,/META-INF/maven、/META-INF/resources、/resources、/static、/public、/templates路径下文件的改变,不会触发自动重启,只会触发静态资源的重加载和浏览器的实时重加载(LiveReload)。通过如下属性设置不触发自动重启的目录(该属性的默认值就是上面列出的目录):spring.devtools.restart.exclude=static/**,public/**
通过如下属性添加不触发自动重启的目录:spring.devtools.restart.additional-exclude=fkjava/**
★ 自动重启的轮训设置:
devtools通过轮询指定路径下文件的改变来触发自动重启,与轮询机制有关的两个配置选项是:- spring.devtools.restart.poll-interval:指定每隔多少秒轮询一次。- spring.devtools.restart.quiet-period:指定保持多少秒的静默期。Spring Boot还可指定触发文件,这样轮询机制只需监控触发文件(不再监控.class文件)的改变来触发自动重启,
例如下面指定只有当reloadtrigger文件被修改时才触发自动重启:
spring.devtools.restart.trigger-file=.reloadtrigger
★ 禁用自动重启
两种方式:方式一:将spring.devtools.restart.enabled设为false来禁用自动重启,在application.properties文件中设置即可,这种设置方式依然会初始化自动重启的类加载器,只是不再监控文件的改变。 方式二:彻底禁用自动重启功能,在调用SpringApplication的run()方法之前将spring.devtools.restart.enabled系统属性设为false。
★ 自动重启时更新JAR包中class文件
有时项目所依赖的JAR包本身也处在开发、调试过程中,此时希望应用重启时也能更新该JAR包中的类文件,
这就需要强制指定用restart类加载器来加载特定JAR包(不是第三方框架的JAR包,而是项目开发的JAR包)中的类文件。通过META-INF/spring-devtools.properties文件可设置类加载器行为:restart.include.*:该属性显式指定用restart类加载器加载哪些JAR包,该属性值就是要用restart加载器所加载的JAR包。
restart.exclude.*:该属性显式指定用base类加载器加载哪些JAR包。通常无需指定该属性,因为devtools默认就是使用base类加载器来加载JAR包。
例如如下配置代码:restart.exclude.fkjavacommonlibs=/fkjava-common-[\\w\\d-\\.]+\\.jarrestart.include.utillibs=/fkjava-util-[\\w\\d-\\.]+\\.jar上面配置中key必须是唯一的,例如上面的key,它们只要以restart.exclude.*或restart.include.*开头就有效。
★ 实时重加载
devtools工具内嵌了一个实时重加载(LiveReload)服务器,它可在资源改变时触发浏览器(浏览器需要安装LiveReload插件)刷新。——本质依然是要浏览器去刷新,只不过不需要由开发者手动刷新。【备注】 浏览器的LiveReload需要插件支持。如果想关闭devtools的LiveReload服务器,可在application.properties文件中添加如下属性:spring.devtools.livereload.enabled=false【注意】如果要让实时livereload生效,必须开启应用的自动重启功能。
都是需要按ctrl+9编译
★ devtools(开发者工具)的全局配置文件
home目录windows: C:\user\<用户名>Linux: /home/<用户名>${home}/.config/spring-boot/spring-boot-devtools.三个后缀
${home}/.spring-boot-devtools.properties所有和devtools有关的配置都可在全局配置文件中设置。
★ devtools的全局配置文件与Profile是无关的。
通过spring-boot-devtools.properties(或yaml、yml)文件设置活动Profile不会有任何效果。
——不能设置活动Profilespring-boot-devtools-<profile>.properties(或yaml、yml)形式的配置文件将会被忽略、不会有任何作用。
——尝试针对特定Profile设置全局配置文件是无效的。通过spring-boot-devtools.properties(或yaml、yml)文件指定spring.config.activate.on-profile属性没有任何意义。
——尝试在全局配置文件中设置多Profile的配置也是无效的。
相关文章:
30、devtools 依赖关于自动重启(自动加载页面)的知识
devtools 依赖关于自动重启的知识 ★ 自动重启 devtools会监控类加载路径中的文件(尤其是*.class文件),只要这些文件发生了改变, devtools就会自动重启Spring Boot应用。▲ 不同工具触发自动重启的方式:Eclipse&…...
ES6 Promise/Async/Await使用
Promise应用 在工作中, 我们经常会遇到用异步请求数据, 查询一个结果, 然后把返回的参数放入到下一个执行的异步函数像这样: $.ajax({..., success(resp)>{$.ajax({..., resp.id, success(resp)>{$.ajax({..., resp.name success(resp)>{//多层嵌套的情况, 看着是不…...
Word中对象方法(Methods)的理解及示例(上)
【分享成果,随喜正能量】奋斗没有终点,任何时候都是一个起点,沉潜是为了蓄势待发,沉潜是为了等待因缘。鲸豚沉潜于大海,幽兰深藏于山谷,能够经得起沉潜的人,才会有更高的成就。正如一年的树木只能当柴烧&am…...
AutoDev 1.1.3 登场,个性化 AI 辅助:私有化大模型、自主设计 prompt、定义独特规则...
在过去的半个月里,我们为开源辅助编程工具 AutoDev 添加了更强大的自定义能力,现在你可以: 使用自己部署的开源大模型自己配置 Intellij IDEA 中的行为自定义开发过程中的规范 当然了,如果您自身拥有开发能力的话,建议…...
win11 python 调用edge调试过程
1、下载对应版本的驱动程序: https://developer.microsoft.com/zh-cn/microsoft-edge/tools/webdriver/ 2、和系统版本对应的exe文件(x86、x64要对应)放置的固定的目录,我放到了system32下了; 3、PATH路径添加windows/system32目录&#x…...
DS-排序回顾
快速排序相比于堆排序的优点有: 效率更高:快速排序的平均时间复杂度为 O(nlogn),而堆排序的时间复杂度为 O(nlogn)。虽然它们的时间复杂度相同,但是在实际情况下,快速排序往往比堆排序更快,因为快速排序具有…...
clion软件ide的安装和环境配置@ubuntu
1.官网: Download CLion 2.安装Clion 直接在官网下载并安装即可,过程很简单 https://www.jetbrains.com/clion/ https://www.jetbrains.com/clion/download/#sectionlinux 3.激活码 4.配置Clion 安装gcc、g、make Ubuntu中用到的编译工具是gcc©…...
Cpp学习——类与对象3
目录 一,初始化列表 1.初始化列表的使用 2.初始化列表的特点 3.必须要使用初始化列表的场景 二,单参数构造函数的隐式类型转换 1.内置类型的隐式类型转换 2. 自定义类型的隐式类型转换 3.多参数构造函数的隐式类型转换 4.当你不想要发生隐式类型转换…...
回归预测 | MATLAB实现PSO-RBF粒子群优化算法优化径向基函数神经网络多输入单输出回归预测(多指标,多图)
回归预测 | MATLAB实现PSO-RBF粒子群优化算法优化径向基函数神经网络多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现PSO-RBF粒子群优化算法优化径向基函数神经网络多输入单输出回归预测(多指标,多图&a…...
ahooks.js:一款强大的React Hooks库及其API使用教程(四)
一、ahooks.js简介二、ahooks.js安装三、继续ahooks.js API的介绍与使用教程51. useResetState52. useUpdateLayoutEffect53. useDeepCompareLayoutEffect54. useRafInterval55. useRafTimeout56. useTimeout57. useLockFn58. useDocumentVisibility59. useDrop60. useDrag 一、…...
FOSSASIA Summit 2023 - 开源亚洲行
作者 Ted 致歉:本来这篇博客早就该发出,但是由于前几个月频繁差旅导致精神不佳,再加上后续我又参加了 Linux 基金会 7/27 在瑞士日内瓦举办的 Open Source Congress,以及 7/29-30 台北的 COSCUP23,干脆三篇连发&#x…...
QT 基本对话框
包括: 1.标准文件对话框 dialog.h #ifndef DIALOG_H #define DIALOG_H#include <QDialog> #include <QTextCodec> #include <QLabel> #include <QLineEdit> #include <QPushButton> #include <QGridLayout> #include <QFr…...
8th参考文献:[8]许少辉.乡村振兴战略下传统村落文化旅游设计[M]北京:中国建筑出版传媒,2022.
8th参考文献:[8]许少辉.乡村振兴战略下传统村落文化旅游设计[M]北京:中国建筑出版传媒,2022&…...
Azure静态网站托管
什么是静态网站托管 Azure Blob的静态网站托管是一项功能,它允许开发人员在Azure Blob存储中托管和发布静态网站。通过这个功能,您可以轻松地将静态网页、图像、视频和其他网站资源存储在Azure Blob中,并直接通过提供的URL访问这些资源。 官…...
LeetCode 热题 100(五):54. 螺旋矩阵、234. 回文链表、21. 合并两个有序链表
题目一: 54. 螺旋矩阵https://leetcode.cn/problems/spiral-matrix/ 题目要求: 思路:一定要先找好边界。如下图 ,上边界是1234,右边界是8、12,下边界是9、10、11,左边界是5,所以可…...
常用消息中间件介绍
RocketMQ 阿里开源,阿里参照kafka设计的,Java实现 能够保证严格的消息顺序 提供针对消息的过滤功能 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机制 亿级消息堆积能力 RabbitMQ Erlang实现,非常重量级,更适…...
装饰器读取不到被装饰函数的参数-已解决
def write_case_log(func):def wrapper(*args, **kwargs):logger.info("{}开始执行".format(func.__name__))func(*args,**kwargs)logger.info("{}执行中".format(args))logger.info("{}执行结束",format(func.__name__))return wrapper被装饰函…...
python爬虫爬取中关村在线电脑以及参数数据
一. 内容简介 python爬虫爬取中关村在线电脑以及参数数据 二. 软件环境 2.1vsCode 2.2Anaconda version: conda 22.9.0 三.主要流程 3.1 代码 解析都在代码里面 # 接口分析 # 原始接口,后面几个数字就是占位的,每个位置代表着不同的标签 # http…...
chatGPT-对话爱因斯坦
引言 阿尔伯特爱因斯坦( 1879年 3 月 14 日 – 1955 年 4 月 18 日)是一位出生于德国的理论物理学家,被广泛认为成为有史以来最伟大、最有影响力的科学家之一。他以发展相对论而闻名,他还对量子力学做出了重要贡献,因…...
嵌入式软件开发中的数据类型转换
在嵌入式软件开发时,数据的显示必不可少,那么必定会涉及到数据类型转换。将不同类型的数据在编程中进行转换,以便满足不同的需求。 插入一个知识点: 在C语言中,字符串是由字符组成的字符数组,以null终止符…...
The Go Blog 01:反射的法则(译文)
反思的法则 罗伯-派克 2011 年 9 月 6 日 引言 计算机中的反射是指程序检查自身结构的能力,尤其是通过类型检查自身结构的能力;它是元编程的一种形式。它也是造成混乱的一个重要原因。 在本文中,我们试图通过解释 Go 中的反射是如何工作的…...
Visual Studio Code前端开发插件推荐
引言 Visual Studio Code(简称VS Code)是一款轻量级且强大的开源代码编辑器,广受前端开发者的喜爱。其丰富的插件生态系统为前端开发提供了许多便利和增强功能的插件。本篇博客将向大家推荐一些在前端开发中常用且优秀的插件,并提…...
jps(JVM Process Status Tool):虚拟机进程状况工具
jps(JVM Process Status Tool):虚拟机进程状况工具 列出正在运行的虚拟机进程,并显示虚拟机执行主类名称(Main Class,main()函数所在的类)以及这些进程的本地虚拟机唯一ID(LVMID&am…...
初阶c语言:实战项目三子棋
前言 大家已经和博主学习有一段时间了,今天讲一个有趣的实战项目——三子棋 目录 前言 制作菜单 构建游戏选择框架 实现游戏功能 模块化编程 初始化棋盘 打印棋盘 玩家下棋 电脑下棋 时间戳:推荐一篇 C语言生成随机数的方法_c语言随机数_杯浅…...
计网第三章(数据链路层)(三)
一、点对点协议PPP 在第一篇里有提到数据链路层的信道分为两种:点对点信道和广播信道。 PPP协议就属于点对点信道上的协议。 如果对前面数据链路层的三个基本问题了解的比较透彻,那么这一块很多东西都很好理解。 从考试的角度来讲,PPP协议…...
蓝桥杯每日N题 (砝码称重)
大家好 我是寸铁 希望这篇题解对你有用,麻烦动动手指点个赞或关注,感谢您的关注 不清楚蓝桥杯考什么的点点下方👇 考点秘籍 想背纯享模版的伙伴们点点下方👇 蓝桥杯省一你一定不能错过的模板大全(第一期) 蓝桥杯省一你一定不…...
Opencv 视频的读取与写入
目录 前言 通过路径获取视频内容 获取视频内容 检查是否正确打开 循环播放 完整代码 从摄像头读取视频数据 获取视频设备 其他与直接读取视频一致 完整实例 录制视频 用于创建视频编解码器的四字符码(FourCC) cv2.VideoWriter() 将视频帧…...
LeetCode 833. Find And Replace in String【字符串,哈希表,模拟】1460
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...
Cesium轨迹漫游及视角切换
飞行漫游,就是让Camera飞行。Camera有一些方法可以实现位置、视角的调整,比如flyTo,setView方法。但这些方法并不能沿着我们想要的路径调整,在通过插值的方法不停的调用setView,但这样会造成视图卡顿,而且计…...
构建去中心化微服务集群,满足高可用性和高并发需求的实践指南!
随着互联网技术的不断发展,微服务架构已经成为了开发和部署应用程序的一种主流方式。然而,当应用程序需要满足高可用性和高并发需求时,单一中心化的微服务架构可能无法满足性能和可靠性的要求。因此,构建一个去中心化的微服务集群…...
wordpress创建企业邮箱/网页优化方案
Geospatial 地理位置 朋友的定位,附近的人,打车距离计算? Redis 的 Geo 在Redis3.2 版本就推出了! 这个功能可以推算地理位置的信息,两地之间的距离,方圆 几里的人! 可以查询一些测试数据&…...
网站建设后台有哪些项目/神点击恶意点击软件
2019独角兽企业重金招聘Python工程师标准>>> mysql语句规范: 关键词 函数名全部大写 数据库名称 表名称 字段名称 设置为小写 sql语句必须以分号结尾 转载于:https://my.oschina.net/u/3717819/blog/1563224...
wordpress分类排序号/全自动推广软件
被调合约(通过call回调)支持接收以太币的案例: 被调合约(通过call回调)支持接收以太币的案例:pragma solidity >0.4.0 <0.6.0;contract Test001 {// 这个合约会保留所有发送给它的以太币,没有办法返还。// 必须实现Fallback回退函数,才能支持cal…...
龙华做网站的公司/百度收录接口
[TOC] 1. 什么是碎片 碎片,是Android 3.0(API 11)提出的,为了兼容低版本,support-v4库中也开发了一套Fragment API,最低兼容Android 1.6。 过去support-v4库是一个jar包,24.2.0版本开始&…...
wordpress 自动插入/常见的网站推广方法
参考: 作者:浅然_ https://blog.csdn.net/w_linux/article/details/80086950 spring就是一个能够替你做很多事情的工厂,spring容器中的Bean就是该工厂的产品。要想使用Spring工厂生产和管理Bean,就需要在配置文件中指明需要哪些B…...
做网站实例/百度指数数据分析平台
一、什么是Nginx? Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占有内存少,并发能力强,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。…...