Devtools 热部署

article/2025/10/14 7:29:00

文章目录

  • 前言
  • 使用步骤
    • 1.引入库
    • 2.配置
  • 总结


前言

       在实际开发过程中,每次修改代码就得将项目重启,重新部署,对于一些大型应用来说,重启时间需要花费大量的时间成本。对于一个后端开发者来说,重启过程确实很难受啊


一、使用步骤

1.引入库

<!--devtools热部署-->

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-devtools</artifactId>

            <optional>true</optional>

            <scope>true</scope>

        </dependency>

(1) devtools可以实现页面热部署(即页面修改后会立即生效,这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现),

实现类文件热部署(类文件修改后不会立即生效),实现对属性文件的热部署。

即devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),注意:因为其采用的虚拟机机制,该项重启是很快的

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

2.配置

spring:

  devtools:

    restart:

      enabled: true  #设置开启热部署

      additional-paths: src/main/java #重启目录

      exclude: WEB-INF/**

  freemarker:

    cache: false    #页面不加载缓存,修改即时生效

IDEA中配置:

当我们修改了类文件后,idea不会自动编译,得修改idea设置。

(1)File-Settings-Compiler-Build Project automatically

(2)ctrl + shift + alt + / ,选择Registry,勾上 Compiler autoMake allow when app running


 

 

总结

        深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间


http://chatgpt.dhexx.cn/article/oc5W5ImE.shtml

相关文章

内网渗透的那些net命令|Net config|Net

Net命令 Net命令是一个命令行命令,Net命令有很多函数用于实用和核算计算机之间的NetBIOS连接,可以查看我们的管理网络环境,服务,用户,登陆等信息内容 Net使用方法 显示当前域的计算机列表net view 查看指定计算机的共享资源列表net view \test 查看共享的资源net share 查看…

failed to load response dataRequest content was evicted from inspector cache

在项目中&#xff0c;我用谷歌浏览器查看后台返回的json数据&#xff0c;但是发现前端页面已经接收成功&#xff0c;并且渲染了对应json数据了&#xff0c;但是network里面的response却报错&#xff1a; 调整对应json数据后发现&#xff0c;当后台返回前端的数据超过了一定大…

火狐浏览器提示响应已被截断(有效解决)

产生问题如下&#xff1a;JSON传递数据超过1M 解决方案&#xff1a; 第一步&#xff1a;地址栏输入about:config 第二步&#xff1a;devtools.netmonitor.responseBodyLimit 改为0&#xff0c;相当于禁用大小限制&#xff0c;保存之后即可。

failed to load response data:Request content was evicted from inspector cache

在项目中&#xff0c;我用谷歌浏览器查看后台返回的json数据&#xff0c;但是发现前端页面已经接收成功&#xff0c;并且渲染了对应json数据了&#xff0c;但是network里面的response却报错&#xff1a; 调整对应json数据后发现&#xff0c;当后台返回前端的数据超过了一定大…

必须做作业三:Network-Monitor观察者模式解析

一、总述 观察者模式,由观察者和被观察对象组成,java已经提供了相关类供我们开发者调用! 当数据变化时,Observable会通知集合里的所有观察者对象!具体在数据变化后,app调用Observable的notifyObservers方法,那么 集合里的所有Observer的update()会被执行! 设计其实很简单&#…

n个数 全排列算法

全排列 给定N个数&#xff0c;如 [1,2,3,4,5]&#xff0c;获取它的全排列 经典交换算法 核心思路是交换 #include<stdio.h> void swap(int* a, int* b){int temp *a;*a *b;*b temp; } //int a[] { 1,2,3,4}; //sort(a, 0, 4); void sort(int* a, int k, int m){…

全排列算法(C语言)

全排列算法&#xff08;C语言&#xff09; 思路图形理解树结构 代码 思路 图形理解 我看先看一下从1–4的全排列&#xff0c;如下&#xff1a; &#xff08;1&#xff09;就整体排列而言可以分为四组&#xff0c;分别是以1打头的&#xff0c;以2打头的&#xff0c;以3打头的&a…

全排列算法(无重复数字全排列/有重复数字全排列)/ 组合算法/ 求子集算法

写在前面全排列1 无重复数字全排列1.1 紫书版本1.2 回溯法 2 有重复数字全排列 复盘易错点&#xff08;可跳过&#xff09; 写在前面 很久很久以前就想写的一篇博客&#xff0c;因为懒一直没开工&#xff0c;但是学习全排列算法算是我对递归理解的转折点&#xff0c;感觉很有意…

全排列算法的全面解析

概述 对数组进行全排列是一个比较常见问题&#xff0c;如果是一个比较喜欢考算法的公司&#xff08;貌似一些大公司都比较喜欢考算法&#xff09;&#xff0c;那么估计就会考察应聘者这个全排列的问题了&#xff08;就算不让你编写完整代码&#xff0c;也会让你描述大致的思路&…

【算法】——全排列算法讲解

前言&#xff1a; 今天&#xff0c;我给大家讲解的是关于全排列算。我会从三个方面去进行展开&#xff1a; 首先&#xff0c;我会给大家分析关于全排列算法的思想和定义&#xff1b;紧接着通过手动实现出一个全排列代码来带大家见见是怎么实现的&#xff1b;最后我会给出两道题…

算法 | 全排列问题(图文详解)

目录 一.全排列的定义 1.什么是全排列 2.例子 二.code 三.分析 一.全排列的定义 1.什么是全排列 从n个不同元素中任取m&#xff08;m≤n&#xff09;个元素&#xff0c;按照一定的顺序排列起来&#xff0c;叫做从n个不同元素中取出m个元素的一个排列。当mn时所有的排列情…

全排列算法思路解析

1.全排列的定义和公式&#xff1a; 从n个数中选取m&#xff08;m<n&#xff09;个数按照一定的顺序进行排成一个列&#xff0c;叫作从n个元素中取m个元素的一个排列。由排列的定义&#xff0c;显然不同的顺序是一个不同的排列。从n个元素中取m个元素的所有排列的个数&#…

全排列算法

全排列的概念 排列 从n个数中选取m&#xff08;m<n&#xff09;个数按照一定的顺序进行排成一个列&#xff0c;叫作从n个元素中取m个元素的一个排列。不同的顺序是一个不同的排列。从n个元素中取m个元素的所有排列的个数&#xff0c;称为排列数&#xff08;几种排法&#…

激活JRebel

生成新的 GUID 将生成的GUID 粘贴到此处 https://jrebel.qekang.com/ 如&#xff1a; https://jrebel.qekang.com/cf0c9d95-c31f-4e75-bc5a-146291b8bb71

JRebelXRebel的配置和使用(进阶篇)

JRebel&XRebel的配置和使用 嘚吧嘚设置JRebel快捷键XRebel使用 嘚吧嘚 之前简单介绍了JRebel&XRebel的安装和使用&#xff0c;不了解的朋友可以补补课哈&#x1f606;。 JRebel&XRebel这款插件不仅仅可以用来热部署&#xff0c;所以继续分享一下这款插件的相关使…

IDEA热部署JRebel插件激活教程

JRebel简介 JRebel是一款实现热部署的开发工具&#xff0c;它可以允许你在启动程序时修改java代码直接进行编译生效&#xff0c;无须手动重启。热部署的实现会为你节省了大量重启时间&#xff0c;明显提高个人开发效率。 安装JReable 同其它插件安装一样&#xff0c;请按照以…

Idea热部署插件JRebel+XRebel

1、下载地址&#xff1a;https://plugins.jetbrains.com/plugin/4441-jrebel-and-xrebel/versions 保险起见这里建议下载2022.4.1版本&#xff0c;否则容易出现JRebel LS client not configured的问题&#xff0c;如果你已经出现了&#xff0c;可以参考 https://blog.csdn.ne…

JRebel 热部署

前言 Jrebel 可快速实现热部署&#xff0c;节省了大量重启时间&#xff0c;提高了个人开发效率。 IDEA上原生是不支持热部署的&#xff0c;一般更新了 Java 文件后要手动重启 Tomcat 服务器&#xff0c;才能生效&#xff0c;浪费时间浪费生命&#xff0c;目前对于idea热部署最…

IDEA热部署插件JRebel使用

JRebel安装与激活 JRebel 使用 此时已经安装好并已激活&#xff0c;我们使用 JRebel debug的时候&#xff0c;修改代码&#xff0c;不能实现热部署&#xff0c;因此还需要设置其他地方 1.项目自动编译 设置 compiler.automake.allow.when.app.running ctrlshiftA 或者 help->…

IDEA插件-热部署:JRebel

一、摘要 springboot项目开发过程中通常修改了某分部代码需要重启服务才能生效。通过JRebel插件可以实现热部署&#xff0c;避免了频繁重启服务。 JRebel是一套JavaEE开发工具。 Jrebel 可快速实现热部署&#xff0c;节省了大量重启时间&#xff0c;提高了个人开发效率。 二、…