SpringBoot项目实现热部署

news2025/1/15 23:32:45

文章目录

  • SpringBoot实现热部署
      • 手动开启热部署
      • 自动开启热部署
      • 热部署相关配置

SpringBoot实现热部署

  • 什么是热部署

    所谓热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。对于Java应用程序来说,热部署就是在运行时更新Java类文件。

  • 热部署有什么用

    1. 节约时间,热部署只需要重新更新一下改动过的class文件,不需要全部再编译一遍
    2. 提高开发效率,热部署对于静态资源能够实现实时更新,不需要再重启项目

手动开启热部署

之前在SSM中我们热部署,是通过勾选两个选项就实现了:
在这里插入图片描述

而在SpringBoot首先我们需要通过热部署依赖实现热部署:(Step1

        <!--热部署依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
			<!--  配置插件,让热部署依赖spring-boot-devtools生效
			备注:一般这个插件在我们创建SpringBoot项目时就自带了,不需要手动引入,所以我们只需要导入热部署依赖就行了
			 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!-- 设置为true,让热部署devtools生效 -->
                    <fork>true</fork>
                    <addResources>true</addResources>
                </configuration>
            </plugin>

然后每次当我们修改了代码(Step2)后,我们需要点击构建项目:(Step3
在这里插入图片描述

这样就不需要重启项目了

知识拓展:重启和重载

  • 重启(Restart):自定义开发代码,包含类、页面、配置文件等,加载位置restart类加载器
  • 重载(ReLoad):jar包,加载位置base类加载器

重新运行项目也就是重启项目包括了Restart过程和ReLoad过程,而热部署只包含Restart过程,所以热部署要比重启要快得多

自动开启热部署

前面我们学习了手动开启热部署,每次都需要手动点击,这显得很麻烦,这里我们将学习如何让IDEA自动启动热部署(也就是定时热部署,一般是鼠标停止五秒中就会热部署一次)
注意:自动开启热部署,也是需要引入热部署依赖的

  • Step1:勾选自动构建项目
    在这里插入图片描述

  • Step2:勾选热部署配置项

    温馨提示:如果使用的是IDEA 2021.2之前版本的话还是使用快捷键Shift+Ctrl+Alt+/,选择Registry...,将compiler.automake.allow.when.app.running选项勾上(这里我使用的是2022版的IDEA,与2021版IDEA的配置不同)

    在这里插入图片描述

    注意:汉化后的IDEA这个选项的位置发生了变化

    在这里插入图片描述

  • Step3

    IDEA鼠标悬停5秒不动,IDEA就会自动开启热部署

热部署相关配置

通过修改项目中的文件,你可以发现其实并不是所有的文件修改都会激活热部署的,原因在于在开发者工具中有一组配置,当满足了配置中的条件后,才会启动热部署,配置中默认不参与热部署的目录信息如下:

  • /META-INF/maven
  • /META-INF/resources
  • /resources
  • /static
  • /public
  • /templates

以上目录中的文件如果发生变化,是不参与热部署的。如果想修改配置,可以通过application.yml文件进行设定哪些文件不参与热部署操作,如果想添加不参与热部署的文件或文件夹,可以通过下面的配置:

spring:
  devtools:
    restart:
    # 设置不参与热部署的文件或文件夹
    exclude: static/**,public/**,config/application.yml
    # 关闭或开启热部署(false表示关闭)
    enable: false

知识拓展: 配置文件优先级

在resource下的配置文件中选择关闭热部署,可以会在其它地方打开,比如在 resource/config/ 下的配置文件中开启了热部署,又或者在file下的配置文件,又或者是file下config下的配置文件中开启了热部署,这是由于其它三个配置文件的优先级要高于resource下的配置文件,我们可以通过设置临时属性来提高优先级,也可以通过设置Java系统属性值,相关知识详情可以参考:SpringBoot运维篇学习笔记
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/435677.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

初学数据库

1、什么是数据库 数据库&#xff08;Database&#xff09;是按照数据结构来组织、存储和管理数据的仓库。 每个数据库都有一个或多个不同的API用于创建&#xff0c;访问&#xff0c;管理&#xff0c;搜索和复制所保存的数据。 我们也可以将数据存储在文件中&#xff0c;但是在…

企业级实践:大厂项目研发流程

引言 战国邹孟轲《孟子离娄上》&#xff1a;“离娄之明&#xff0c;公输子之巧&#xff0c;不以规矩&#xff0c;不能成方圆。” 每一个行业都有自己行之有效的规矩&#xff0c;同样软件行业也有自己一套的开发流程&#xff0c;今天就来跟大家聊一聊咱们公司的开发流程&#…

智能修改文案-智能写作平台

智能原创自动写作工具在线 随着人工智能技术的发展&#xff0c;智能原创自动写作工具在线已经成为了网络营销的一个重要工具。这种工具可以根据您输入的关键词和主题&#xff0c;自动生成高质量、原创性强的文章。下面是智能原创自动写作工具在线的优势。 节省时间和人力成本 …

IDEA重复下载SNAPSHOT包问题

问题现象 reimport 之后 状态栏显示resolving dependencies… 遇到某个比较大的快照包(33M)&#xff0c;同一天的第2个版本时 1.0-xxx-SNAPSHOT.时间戳-2 idea importer 会先分片下载 x.jar.part文件中&#xff0c;然后复制为x.jar吧 如图中所示&#xff0c;其实已经下载完了&…

C++四种类型转换运算符

C语言之所以增加强制类型转换的语法&#xff0c;就是为了强调风险&#xff0c;让程序员意识到自己在做什么。 但是&#xff0c;这种强调风险的方式还是比较粗放&#xff0c;粒度比较大&#xff0c;它并没有表明存在什么风险&#xff0c;风险程度如何。再者&#xff0c;C风格的…

深入浅出OkHttp,【带你手写】构建高效、高性能的网络请求框架

简述 OKHttp是一个用Java编写的网络框架&#xff0c;可用于 Android&#xff0c;以及一些基于Java的web应用开发中。它使用了HTTP/2标准的支持和连接池技术&#xff0c;可以让应用快速向Web服务器发送网络请求&#xff0c;并得到响应。OKHttp提供了一个简单的API&#xff0c;允…

【SQL】列的选择与查询

本文内容参考书籍《SQL基础教程》第二章&#xff0c;课后习题在最后&#xff0c;请多指教。之前章节的内容请点击下方链接。 前言 PostgreSQL的下载与安装 第一章 数据库的创建&#xff0c;表的创建、更新、删除 一、SELECT语句 1、查询表中的列 &#xff08;1&#xff09…

【每日一题】——移除元素

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;每日一题 &#x1f48c;其他专栏&#xff1a; &#x1f534; 每日反刍 &#x1f7e1; C跬步积累 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0c;缓称…

重装系统重启后无法进入系统解决方法

重启无法进入系统怎么办?让大家平日里使用小白装机系统的话&#xff0c;很有可能会由于没有办法顺利的进行引导菜单而导致无法进入系统下面&#xff0c;小编今天教大家小白装机重启无法进入系统解决方法。 方法/步骤&#xff1a; 方法一&#xff1a;运用热键再次进入。 1、小…

【LeetCode】剑指 Offer(29)

目录 题目&#xff1a;剑指 Offer 56 - II. 数组中数字出现的次数 II - 力扣&#xff08;Leetcode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 题目&#xff1a;剑指 Offer 57. 和为s的两个数…

JVM垃圾回收机制(GC)

目录 GC的作用&#xff1a; 申请内存的时机和释放内存的时机 内存泄露和内存溢出 内存泄露 内存溢出 GC&#xff08;垃圾回收的劣势&#xff09; GC&#xff08;垃圾回收&#xff09; 的工作过程 垃圾回收的过程&#xff1a; 第一阶段&#xff1a;找垃圾/判定垃…

Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCV实现图像的直方图算法增强(C++)

Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCV实现图像的直方图算法增强&#xff08;C&#xff09; Baumer工业相机Baumer工业相机使用图像算法增加图像的技术背景Baumer工业相机通过BGAPI SDK联合OpenCV使用图像增强算法1.引用合适的类文件2.BGAPI SDK在图像回调中引用…

基于NXP iMX8处理器扩展外部 SGTL5000 音频接口

By Toradex胡珊逢 Apalis iMX8 计算机模块的数字音频接口 SAI&#xff08;Synchronous Audio Interface&#xff09;可以配置为 AC97、I2S格式&#xff0c;用于连接外部音频编解码器。文章接下来将介绍在 Linux BSP v6 上如何扩展第二路 SGTL5000。 iMX8 处理器具有多路 SAI 通…

I2C基础入门

I2C参数 主从模式&#xff1a; 主机从机 常见速率&#xff1a; 普通模式&#xff08;100kHz&#xff09;快速模式&#xff08;400kHz&#xff09;快速模式&#xff08;1MHz&#xff09;高速模式&#xff08;3.4MHz&#xff09;超高速模式&#xff08;5MHz&#xff09; 地址…

__cplusplus和extern “C“

文章目录 __cplusplus是什么extern "C"使用场景的示例通过MinGW编译及查看下目标文件中的符号用gcc编译器添加 -c选项 使my_handle.c文件编译后生成my_handle.o文件&#xff0c;这里的 -o是 output的意思nm命令 是GCC编译集合下最常用的查看目标文件中的符号的命令 -…

0601概述-react路由-react

1 SPA与MPA 1.1 简述 单页面应用和多页面应用是两种不同的 Web 应用程序架构。 单页面应用&#xff08;SPA&#xff09;是指在一个 HTML 页面中动态加载和渲染所有的应用程序内容&#xff0c;通过前端 JavaScript 操作来实现页面的变化和交互。SPA 不需要每次请求新的 HTML …

牛客刷题错题解析

以下是Video/Audio中会触发的事件的有&#xff1f; load play seeked abort 网址&#xff1a;https://www.nowcoder.com/questionTerminal/fc3b560267fd44e98d02a40a 方法&#xff1a;load() play() pause() 事件&#xff1a;play() playing() pause() seeked() seeking() abor…

Linux移植5.4版本内核:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(5.4版本内核)

Linux移植5.4版本内核&#xff1a;正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤&#xff08;5.4版本内核&#xff09; 文章目录 Linux移植5.4版本内核&#xff1a;正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤&#xff08;5.4版本内核&#xff09;1.出厂源…

浅理解JavaScript数组去重的方法(划重点),当面试官问如何实现数组去重时,你可以这样做...

文章目录 &#x1f4cb;前言&#x1f3af;什么是数组去重&#xff0c;运用场景是什么&#xff1f;&#x1f3af;常用的数组去重方法&#x1f9e9;使用 Set 对象&#x1f9e9;使用 Object&#xff08;对象、基于Hash哈希表&#xff09; 或 Map&#x1f9e9;使用 filter 方法与 i…

概率图降低表示需要的参数指的是什么?(贝叶斯网络) 结构化概率模型

深度学习中经常要对概率密度建模。对于多维度随机变量来说&#xff0c;这有些困难。概率化结构&#xff08;既图模型&#xff09;是处理这个问题的手段之一。这引出了两个问题。为什么建模困难&#xff1f;图模型怎样解决了这个困难&#xff1f; 关于这个问题&#xff0c;花书…