【Spring Boot】开发环境热部署

news2024/10/7 10:25:02

开发环境热部署

在实际的项目开发调试过程中会频繁地修改后台类文件,导致需要重新编译、重新启动,整个过程非常麻烦,影响开发效率。下面介绍Spring Boot如何解决这个问题。

1.devtools实现原理

我们在开发调试Spring Boot项目时,需要经历重新编译、重新启动程序的过程。由于系统启动时,需要加载一系列的组件和依赖包,因此整个过程非常耗时,大大影响开发效率。

Spring Boot在这方面做了很好的支持,提供了spring-boot-devtools组件,使得无须手动重启Spring Boot应用即可重新编译、启动项目,大大缩短编译、启动的时间,从而提高开发效率。

spring-boot-devtools的核心是两个类加载器(ClassLoader):一个是Base类加载器(Base ClassLoader),负责加载那些不会改变的类,如第三方JAR包等;另一个是Restart类加载器(Restart ClassLoader),负责加载那些正在开发的会改变的类。这样如果只修改Java代码,devtools只会重新加载被修改的类文件,不会重新加载其他第三方的JAR包,所以重启较快,从而达到热部署的效果。

我们在项目中引入devtools组件之后,devtools会监听classpath下的文件变动,当文件被修改时会重新编译,重新生成类文件;devtools监听到类文件变动,触发Restart类加载器重新加载该类,从而实现类文件和属性文件的热部署。

需要注意的是,并不是所有的更改都需要重启应用(如静态资源、视图模板)。我们可以通过设置spring.devtools.restart.exclude属性来指定一些文件或目录的修改不用重启应用。例如,可以设置/static和/public下的所有文件更新都不触发应用重启。

2.配置开发环境热部署

步骤01 在pom.xml配置文件中添加dev-tools依赖。

在这里插入图片描述
在上面的示例中,使用optional=true表示依赖不会传递,即该项目依赖devtools;其他项目如果引入此项目生成的JAR包,则不会包含devtools,如果想要使用devtools,则需要重新引入。

步骤02 在application.properties中配置devtools。

在这里插入图片描述
上面的配置主要是打开devtools热部署,然后指定监控的后台文件目录,最后指明文件变更不需要重新编译部署的目录。配置完成之后,devtools会监听classpath下的文件变动,并且会立即重启应用。

需要注意的是,devtools也可以实现前台页面热部署,即页面修改后会立即生效,需要在application.properties文件中配置spring.thymeleaf.cache=false,以指定不缓存前端页面。

步骤03 验证配置是否生效。

配置完成后,需要验证热部署是否生效。首先启动项目,修改项目中的某个java文件,然后在IDEA后台可以看到devtools自动重启应用。

修改java后台代码就会发现Spring Boot已经重新编译该文件,然后自动重新加载,无须手动重启。

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

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

相关文章

Flink 系列三 Flink 实战

目录 ​编辑 前言 1、安装flink环境 2、在idea中创建flink的第一个demo 2.1、执行如下maven命令 2.2、填写groupId、artifactId、version、package 2.3、选择Yes即可生成创建好的工程 3、开发第一个flink程序 3.1、开发一个简单的统计程序 3.2、直接编译得到jar包 4、…

【Java基础】AQS (AbstractQueuedSynchronizer) 抽象队列同步器

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。 目录 一、导读1.1 CLH锁 二、概览三、使用场景3.1 AQS 对资源的共享方式…

【自我提升】JPA从搭建到CRUD快速入门(IDEA+MAVEN)

写在前面:今天又学习一点新的东西,方面日后查询和巩固学习,下面将学习过程记录下来。 一、创建MAVEN工程 1. 打开IDEA创建一个纯净的maven工程项目 2. 打开pom文件,导入maven坐标 注意:我使用的postgres数据库&#x…

【微服务】搭建项目以及子模块

目录 方法一:搭建远程仓库新建idea 项目创建子模块创建父模块的pom父模块的gitignore文件修改查看远程代码仓库 方法二 方法一: 搭建远程仓库 选择 下载地址 新建idea 项目 复制 项目远程仓库的下载地址 下载完成 创建子模块 导入微服务的必要组件…

Apache Pulsar 分布式部署

1.Pulsar 简介 Pulsar 是一个支持多租户的、高性能的消息中间件;最初是由 Yahoo 研发的开源,分布式pub-sub系统,现在是Apache的一个顶级开源项目 Pulsar 提供了四种订阅类型,它们可以共存在同一个主题上,以订阅名进行区…

【html页面引入vue3语法模板】在html页面中使用vue3语法和elementul-plus组件库的简单模板

前言 这是最近在看这些东西,因为看别的地方是用脚手架直接用的。 我这个项目想要在html上直接使用。 所以我就试了下如何在html上使用vue3语法 目前摸索出来的是这样可以使用。 记录下来供参考,如果有不好的地方后续改进 效果图 这里就是简单的试了一…

修改npm路径

npm config ls如果是第一次使用NPM安装包的话,在配置中只会看到prefix的选项,就是NPM默认的全局安装目录。但是如果有多次使用NPM安装包的话,就会看到cache和prefix两个路径。 新建两个文件夹node_global_modules和node_cache npm config s…

mac android studio设置跟mac系统一样的快捷键

mac版的android studio 跟mac系统的快捷键不一样,主要修改了下面几组操作,为了跟mac系统快捷键相同 setting->Keymap 搜索bottom 修改3个快捷键: cmd↓ 设置让鼠标移动到屏幕最后面 shiftcmd↓ 选中从当前位置到屏幕最下面 option↓. 或者 end 滚动到屏幕最下方 // 因为默认…

详解 HTTPS、TLS、SSL、HTTP区别和关系

一、什么是HTTPS、TLS、SSL HTTPS,也称作HTTP over TLS。TLS的前身是SSL,TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3。下图描述了在TCP/IP协议栈中TLS(各子协议)和HTTP的关系。 二、HTTP和HTTPS协议的区别 …

【开源项目】中后台开发框架vue-next-admin

vue-next-admin 基本介绍 基于 vue3.x CompositionAPI setup 语法糖 typescript vite element plus vue-router-next pinia 技术,适配手机、平板、pc 的后台开源免费模板,希望减少工作量,帮助大家实现快速开发。 在线预览 账号: adm…

Braindecode系列 (1):在BCIC IV 2a数据集上进行试验

Braindecode系列:在BCIC IV 2a数据集上进行试验 0. 引言1. 环境介绍1.1 环境配置1.2 运行环境 2. Python实现2.1 加载和预处理数据集2.2 创建模型2.3 模型训练2.4 结果输出图像 3. 结果展示4. 总结 0. 引言 最近在看运动想象相关的论文时,找到了一个很好…

在线培训系统的保障措施带来安全、可靠的学习环境

在今天的数字时代,越来越多的人选择在线培训系统作为学习的方式。然而,随着在线教育市场的不断增长,安全和可靠性成为消费者普遍关心的问题。因此,在线培训系统需要采取一系列保护措施以确保学生的数据和隐私得到保护,…

Python 运算符(二)

文章目录 Python逻辑运算符Python成员运算符Python身份运算符Python运算符优先级后记 Python逻辑运算符 Python语言支持逻辑运算符,以下假设变量 a 为 10, b为 20: 运算符逻辑表达式描述实例andx and y 布尔"与" - 如果 x 为 False,x and y …

php周练

前言:博主个人小练(纯小白)。 目录 1.[SWPUCTF 2021 新生赛]gift_F12已解决2.[SWPUCTF 2021 新生赛]jicao3.[ZJCTF 2019]NiZhuanSiWei4.[SWPUCTF 2021 新生赛]no_wakeup5.[SWPUCTF 2021 新生赛]ez_unserialize 1.[SWPUCTF 2021 新生赛]gift_…

Ae 效果:CC RepeTile

风格化/CC RepeTile Stylize/CC RepeTile CC RepeTile(CC 重复拼贴)效果可对整个图层进行复制并扩展,通过重复拼贴来创建平铺效果。 ◆ ◆ ◆ 效果属性说明 Expand Right 向右扩展 设置图层向右扩展的距离。 Expand Left 向左扩展 设置图层…

VMware vCenter Server 7.0 Update 3n 下载 - 集中管理 vSphere 环境

VMware vCenter Server 7.0 Update 3n 下载 - 集中管理 vSphere 环境 请访问原文链接:https://sysin.org/blog/vmware-vcenter-7-u3/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org VMware vCenter Server 是一款高…

【菜菜丸的菜鸟教程】制作带闹铃和振动功能的仿真闹钟

一、准备闹钟模型 (一)下载模型 从Unity资源商店和其他模型网站可以下载到各种各样的闹钟模型。为了帮助大家了解机械钟表的设置原理,建议使用带有时针、分针和秒针的钟表,如下图。 注意:时针、分针和秒针最好是挂在闹钟父物体下的三个独立的…

【数据结构】--二叉树

注:本文树和二叉树的概念及结构部分有部分参考了别的文章,其他的二叉树的实现和性质习题等等都是自己一点点写的,创作不易,希望支持! ————————————————————— 目录 一. 树概念及结构 1、树概念…

springboot家具商城系统

开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven…