当前位置: 首页 > news >正文

一文搞定IDEA中SpringBoot项目环境的热部署

很多人都知道,如果更改IDEA中的一些配置,我们便可以在SpringBoot项目中修改前端程序代码后,直接刷新浏览器便可以看见修改前端代码后的效果,但是一旦修改Java源程序就需要重新启动服务器。而在实际的项目开发调试过程中会频繁地修改后台类文件,导致需要重新编译、重新启动,整个过程十分麻烦,影响开发效率,热部署就是使正在运行状态的应用,修改了它的Java源码之后,在不重新启动服务器的情况下能够自动把修改内容编译并部署到服务器上,使得修改立即生效。 热部署为了解决的问题有两个:
1、在开发的时候,修改代码后不需要重启应用就能看到效果,大大提升开发效率;
2、生产上运行的程序,可以在不停止运行的情况下进行升级,不影响用户使用。
具体实现SpringBoot项目环境的热部署步骤如下所示:

1.在pom.xml中添加dev-tools依赖

在创建的SpringBoot项目中的pom.xml中添加dev-tools依赖,将下述的代码粘贴进入pom.xml刷新即可。

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

注意:使用optional=true是表示依赖不会传递,即项目依赖于devtools;其他项目如果引入此项目生成的JAR包,则不会包含devtools。
下载完毕后,能够在项目的依赖项中发现devtools依赖即表示下载并导入成功,如下所示:
在这里插入图片描述

2.设置开发环境热部署

在类路径下的application.properties配置文件中配置devtools。具体配置代码如下所示:

# 开启热部署
spring.devtools.restart.enabled=true
# 设置重启目录
spring.devtools.restart.additional-paths=src/main/java
# 设置classpath目录下的static文件夹内容修改不重启
# 因为static文件夹下面放的是静态资源(包括图片 js文件 css文件等)
spring.devtools.restart.exclude=static/**

3.开启自动编译

首先点击IDEA菜单栏的文件,选择设置,选择构建、执行、部署下面的编译器,最后勾选自动构建项目即可。具体如下图所示:
在这里插入图片描述
最后,我们还需要在设置中的高级设置勾选允许启动自动生成即可!
这里需要注意:
IntelliJ IDEA中的注册表中开启compiler.automake.allow.when.app.running选项,此选项在IntelliJ IDEA 2021.2之后的版本迁移到高级设置中了。
在这里插入图片描述
经过以下三个步骤,从今以后你更新的Java代码将会自动被编译执行,这里我建议在项目开发初期可以不需要项目的热部署,可以在项目的测试阶段开启项目的热部署,因为我们在测试阶段需要不断的重启项目寻找Bug修改Bug,当然这只是我的个人建议,读者可以根据自己的习惯自行选择。

相关文章:

  • Java运算符
  • HIS -- 医院信息管理系统业务流程
  • 【精讲】后台项目 采用vue2框架 完整版内含详细注释 1
  • UVA 10271 佳佳的筷子 Chopsticks [DP的基本运用]
  • 【计算机视觉】尺度不变特征变换(SIFT)
  • 计算机网络基础概念
  • Scala系列一:变量和数据类型
  • ROS从入门到精通3-4:urdf集成Gazebo联合仿真
  • 2、操作系统基本原理
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • [Java]快速入门二叉树,手撕相关面试题
  • 输出UE当前所有UObject的基础信息
  • 【MicroPython ESP32】1.8“tft ST7735带中文驱动显示示例
  • QT提取数据库内容,根据不同字段要求显示不同颜色
  • 最简便的工厂模式
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • AngularJS指令开发(1)——参数详解
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • HTML5新特性总结
  • JAVA SE 6 GC调优笔记
  • markdown编辑器简评
  • node-glob通配符
  • opencv python Meanshift 和 Camshift
  • PHP的类修饰符与访问修饰符
  • tab.js分享及浏览器兼容性问题汇总
  • Terraform入门 - 1. 安装Terraform
  • 前端面试总结(at, md)
  • 如何使用 JavaScript 解析 URL
  • 使用Gradle第一次构建Java程序
  • 从如何停掉 Promise 链说起
  • ​低代码平台的核心价值与优势
  • ###STL(标准模板库)
  • #考研#计算机文化知识1(局域网及网络互联)
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (2)STL算法之元素计数
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (独孤九剑)--文件系统
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .net 反编译_.net反编译的相关问题
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .Net程序帮助文档制作
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • /usr/bin/env: node: No such file or directory
  • @Builder用法
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • []sim300 GPRS数据收发程序