SpringBoot开发 - 什么是热部署和热加载?devtool的原理是什么?

京东一面:Spring Boot 如何热加载jar实现动态插件? 一、背景 动态插件化编程是一件很酷的事情,能实现业务功能的 解耦 便于维护,另外也可以提升 可扩展性 随时可以在不停服务器的情况下扩展功能,也具有非常好的 开放性 除了自己的研发人员可以开发功能之外,也能接纳第三方开发商按照规范开发的插件。 常见的动态插件的实现方式有 SPI、OSGI 等方案,由于脱离了 Spring IOC 的管理在插件中无法注入主程序的 Bean 对象,例如主程序中已经集成了 Redis 但是在插件中无法使用。 本文主要介绍在 Spring Boot 工程中热加载 jar 包并注册成为 阅读详情

在SpringBoot开发调试中,如果我每行代码的修改都需要重启启动再调试,可能比较费时间;SpringBoot团队针对此问题提供了spring-boot-devtools(简称devtools)插件,它试图提升开发调试的效率。@pdai

  • SpringBoot开发 - 什么是热部署和热加载?devtool的原理是什么?
      • 什么是热部署和热加载?
    • 配置devtools实现热部署
      • devtool的原理?为何会自动重启?
      • devtool是否会被打包进Jar?
      • devtool为何会默认禁用缓存选项?
      • devtool是否可以给所有Springboot应用做全局的配置?
      • 如果我不用devtool,还有什么选择?

准备知识点

什么是热部署和热加载?

热部署和热加载是在应用正在运行的时候,自动更新(重新加载或者替换class等)应用的一种能力。(PS:spring-boot-devtools提供的方案也是要重启的,只是无需手动重启能实现自动加载而已。)

严格意义上,我们需要区分下热部署和热加载, 对于Java项目而言:

  • 热部署

    • 在服务器运行时重新部署项目
    • 它是直接重新加载整个应用,这种方式会释放内存,比热加载更加干净彻底,但同时也更费时间。
  • 热加载

    • 在在运行时重新加载class,从而升级应用。
    • 热加载的实现原理主要依赖java的类加载机制,在实现方式可以概括为在容器启动的时候起一条后台线程,定时的检测类文件的时间戳变化,如果类的时间戳变掉了,则将类重新载入。
    • 对比反射机制,反射是在运行时获取类信息,通过动态的调用来改变程序行为; 热加载则是在运行时通过重新加载改变类信息,直接改变程序行为。

什么是LiveLoad?

LiveLoad是提供浏览器客户端自动加载更新的工具,分为LiveLoad服务器和Liveload浏览器插件两部分; devtools中已经集成了LiveLoad服务器,所以如果我们开发的是web应用,并且期望浏览器自动刷新, 这时候可以考虑LiveLoad.

同一时间只能运行一个LiveReload服务器。 开始应用程序之前,请确保没有其他LiveReload服务器正在运行。如果从IDE启动多个应用程序,则只有第一个应用程序将支持LiveReload。

配置devtools实现热部署

我们通过如下配置来实现自动重启方式的热部署。

POM配置

添加spring-boot-devtools的依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional> <!-- 可以防止将devtools依赖传递到其他模块中 -->
    </dependency>
</dependencies>

IDEA配置

如果你使用IDEA开发工具,通常有如下两种方式:

  • 方式一: 无任何配置时,手动触发重启更新(Ctrl+F9)

(也可以用 mvn compile 编译触发重启更新)

  • 方式二: IDEA需开启运行时编译,自动重启更新

设置1:

File->Setting->Build,Execution,Deployment->Compile

勾选:Make project automatically

设置2:

快捷键:ctrl+alt+shift+/

选择:Registry

勾选:compiler.automake.allow.when.app.running

新版本的IDEA可以在File->setting->Advanced Setttings里面的第一个设置:

application.yml配置

spring:
  devtools:
    restart:
      enabled: true  #设置开启热部署
      additional-paths: src/main/java #重启目录
      exclude: WEB-INF/**
  thymeleaf:
    cache: false #使用Thymeleaf模板引擎,关闭缓存

使用LiveLoad

spring-boot-devtools模块包含 嵌入式LiveReload服务器 ,可以在资源更改时用于触发浏览器刷新。 LiveReload浏览器扩展程序支持Chrome,Firefox和Safari,你可以从livereload.com免费下载。

或者从浏览器插件中心下载,比如firefox:

安装完之后,可以通过如下图标管理

如果你不想在应用程序运行时启动LiveReload服务器,则可以将spring.devtools.livereload.enabled属性设置为false 。

同一时间只能运行一个LiveReload服务器。 开始应用程序之前,请确保没有其他LiveReload服务器正在运行。如果从IDE启动多个应用程序,则只有第一个应用程序将支持LiveReload。

进一步理解

虽然一些开发者会使用devtool工具,但是很少有能够深入理解的;让我们理解如下几个问题,帮助你进一步理解。@pdai

devtool的原理?为何会自动重启?

为什么同样是重启应用,为什么不手动重启,而是建议使用spring-boot-devtools进行热部署重启?

spring-boot-devtools使用了两个类加载器ClassLoader,一个ClassLoader加载不会发生更改的类(第三方jar包),另一个ClassLoader(restart ClassLoader)加载会更改的类(自定义的类)。

后台启动一个 文件监听线程(File Watcher) , 监测的目录中的文件发生变动时, 原来的restart ClassLoader被丢弃,将会重新加载新的restart ClassLoader 。

因为文件变动后,第三方jar包不再重新加载,只加载自定义的类,加载的类比较少,所以重启比较快。

这也是为什么,同样是重启应用,为什么不手动重启,建议使用spring-boot-devtools进行热部署重启。

在自动重启中有几点需要注意:

  • 自动重启会记录日志的

(记录在什么情况下重启的日志)

可以通过如下关闭

spring:
  devtools:
    restart:
      log-condition-evaluation-delta: false
  • 排除一些不需要自动重启的资源

某些资源在更改时不一定需要触发重新启动。默认情况下,改变资源/META-INF/maven,/META-INF/resources,/resources,/static,/public,或/templates不触发重新启动,但确会触发现场重装。如果要自定义这些排除项,可以使用该spring.devtools.restart.exclude属性。例如,要仅排除/static,/public你将设置以下属性:

spring:
  devtools:
    restart:
      exclude: "static/**,public/**"

如果要保留这些默认值并添加其他排除项,请改用该spring.devtools.restart.additional-exclude属性。

  • 自定义重启类加载器

重启功能是通过使用两个类加载器来实现的。对于大多数应用程序,这种方法效果很好。但是,它有时会导致类加载问题。

默认情况下,IDE 中的任何打开项目都使用“重启”类加载器加载,任何常规.jar文件都使用“基本”类加载器加载。如果你处理一个多模块项目,并且不是每个模块都导入到你的 IDE 中,你可能需要自定义一些东西。为此,你可以创建一个META-INF/spring-devtools.properties文件。

该spring-devtools.properties文件可以包含以restart.exclude和为前缀的属性restart.include。该include元素是应该被拉高到“重启”的类加载器的项目,以及exclude要素是应该向下推入“Base”类加载器的项目。该属性的值是应用于类路径的正则表达式模式,如以下示例所示:

restart:
  exclude:
    companycommonlibs: "/mycorp-common-[\\w\\d-\\.]+\\.jar"
  include:
    projectcommon: "/mycorp-myproj-[\\w\\d-\\.]+\\.jar"

更多相关的信息可以在 这里 查看。

devtool是否会被打包进Jar?

devtool原则上来说应该是只在开发调试的时候使用,而在生产环境运行jar包时是不需要的,所以Spring打包会不会把它打进JAR吗?

  • 默认情况下,不会被打包进JAR

运行打包的应用程序时,开发人员工具 会自动禁用 。如果你通过 java -jar或者其他特殊的类加载器进行启动时,都会被认为是“生产环境的应用”。

  • 如果我们期望远程调试应用

( 生产环境勿用,只有在受信任的网络上运行或使用 SSL 进行保护时,才应启用它 )

在这种情况下,devtool也具备远程调试的能力:远程客户端应用程序旨在从你的 IDE 中运行。你需要org.springframework.boot.devtools.RemoteSpringApplication使用与你连接的远程项目相同的类路径运行。应用程序的唯一必需参数是它连接到的远程 URL。

例如,如果使用 Eclipse 或 Spring Tools,并且你有一个my-app已部署到 Cloud Foundry 的名为的项目,执行以下操作:

  1. 选择Run Configurations…​从Run菜单。
  2. 创建一个新的Java Application“启动配置”。
  3. 浏览my-app项目。
  4. 使用org.springframework.boot.devtools.RemoteSpringApplication作为主类。
  5. 添加https://myapp.cfapps.io到Program arguments(或任何你的远程 URL)。

正在运行的远程客户端可能类似于以下列表:

.   ____          _                                              __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _          ___               _      \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` |        | _ \___ _ __  ___| |_ ___ \ \ \ \
 \\/  ___)| |_)| | | | | || (_| []::::::[]   / -_) '  \/ _ \  _/ -_) ) ) ) )
  '  |____| .__|_| |_|_| |_\__, |        |_|_\___|_|_|_\___/\__\___|/ / / /
 =========|_|==============|___/===================================/_/_/_/
 :: Spring Boot Remote :: 2.5.4

2015-06-10 18:25:06.632  INFO 14938 --- [           main] o.s.b.devtools.RemoteSpringApplication   : Starting RemoteSpringApplication on pwmbp with PID 14938 (/Users/pwebb/projects/spring-boot/code/spring-boot-project/spring-boot-devtools/target/classes started by pwebb in /Users/pwebb/projects/spring-boot/code)
2015-06-10 18:25:06.671  INFO 14938 --- [           main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@2a17b7b6: startup date [Wed Jun 10 18:25:06 PDT 2015]; root of context hierarchy
2015-06-10 18:25:07.043  WARN 14938 --- [           main] o.s.b.d.r.c.RemoteClientConfiguration    : The connection to http://localhost:8080 is insecure. You should use a URL starting with 'https://'.
2015-06-10 18:25:07.074  INFO 14938 --- [           main] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
2015-06-10 18:25:07.130  INFO 14938 --- [           main] o.s.b.devtools.RemoteSpringApplication   : Started RemoteSpringApplication in 0.74 seconds (JVM running for 1.105)

devtool为何会默认禁用缓存选项?

Spring Boot 支持的一些库 使用缓存来提高性能 。例如,模板引擎缓存已编译的模板以避免重复解析模板文件。此外,Spring MVC 可以在提供静态资源时向响应添加 HTTP 缓存标头。

虽然缓存 在生产中非常有益,但在开发过程中可能会适得其反 ,使你无法看到刚刚在应用程序中所做的更改。出于这个原因, spring-boot-devtools 默认禁用缓存选项。

比如Thymeleaf 提供了spring.thymeleaf.cache来设置模板引擎的缓存,使用spring-boot-devtools模块时是不需要手动设置这些属性的,因为spring-boot-devtools会自动进行设置。

那么会自动设置哪些配置呢?你可以在DevToolsPropertyDefaultsPostProcessor类找到对应的默认配置。

public class DevToolsPropertyDefaultsPostProcessor implements EnvironmentPostProcessor {

	static {
		Map<String, Object> properties = new HashMap<>();
		properties.put("spring.thymeleaf.cache", "false");
		properties.put("spring.freemarker.cache", "false");
		properties.put("spring.groovy.template.cache", "false");
		properties.put("spring.mustache.cache", "false");
		properties.put("server.servlet.session.persistent", "true");
		properties.put("spring.h2.console.enabled", "true");
		properties.put("spring.web.resources.cache.period", "0");
		properties.put("spring.web.resources.chain.cache", "false");
		properties.put("spring.template.provider.cache", "false");
		properties.put("spring.mvc.log-resolved-exception", "true");
		properties.put("server.error.include-binding-errors", "ALWAYS");
		properties.put("server.error.include-message", "ALWAYS");
		properties.put("server.error.include-stacktrace", "ALWAYS");
		properties.put("server.servlet.jsp.init-parameters.development", "true");
		properties.put("spring.reactor.debug", "true");
		PROPERTIES = Collections.unmodifiableMap(properties);
	}

当然如果你不想被应用属性被spring-boot-devtools默认设置, 可以通过spring.devtools.add-properties到false你application.yml中。

devtool是否可以给所有Springboot应用做全局的配置?

可以通过将spring-boot-devtools.yml文件添加到$HOME/.config/spring-boot目录来 配置全局 devtools 设置 。

添加到这些文件的任何属性都适用于你机器上使用 devtools 的所有Spring Boot 应用程序。例如,要将重新启动配置为始终使用触发器文件,你需要将以下属性添加到你的spring-boot-devtools文件中:

spring:
  devtools:
    restart:
      trigger-file: ".reloadtrigger"

如果我不用devtool,还有什么选择?

如果我不用devtool,还有什么选择?

在实际的开发过程中,我也不会去使用devtool工具, 因为:

  • devtool本身基于重启方式,这种仍然不是真正的热替换方案,JRebel才是(它是收费的)
  • 开发调试最重要的还是一种权衡
    • 自动重启的开销如果和手动重启没有什么太大差别,那么还不如手动重启(按需重启)
    • 多数情况下,如果是 方法内部的修改或者静态资源的修改 ,在IDEA中是可以通过Rebuild(Ctrl + Shift + F9)进行热更的

  • 此外还有一个工具spring loaded, 可实现修改类文件的热部署,具体可看其 github地址 上的说明。

示例源码

GitHub - realpdai/tech-pdai-spring-demos: Spring Framework5/SpringBoot 2.5.x Demos

Spring Boot DevTools(官网文档解读) Spring Boot DevTools 是专为开发者设计的辅助工具模块,它旨在提升开发效率,加速应用的开发与部署流程。本文基于Spring官方文档中关于DevTools的指导,旨在为广大学习者和开发者提供一个实用的参考资料。 阅读详情

相关推荐

极化码自适应CA-SCL译码(极化码译码)

我们知道最初极化码提出来是运用SC译码,但短码和中等长度其译码性(误码率)能不如LDPC码码,,为了提升有限长度极化码的译码性能,我们主要从译码器的性能和极化码的纠错性能来考虑。 SCL:在增加复杂度的情况下,大幅度增加极化码纠错性能,在高信噪比下,与最优ML性能相同(L=32) CA-SCL:改善最小汉明距离(最小汉明距离增大),增加其纠错性能。把CRC和极化码极联。 自适应CA-SCL:CA-SCL译码虽然提升几乎没的纠错性能,但是导致复杂度大幅度增加,为了降低其复杂度,让L自适应,从而降低其复杂度

m0_52610504的博客 3294

SpringBoot实现热部署/加载

SpringBoot实现热部署——解决compiler.automake.allow.when.app.running 找不到的问题

白白白鲤鱼的博客 3113

VS Code/TRAE集成Cppcheck并启用MISRA规则

本文探讨了嵌入式开发中Cppcheck工具集成与MISRA规则检查的必要性。详细介绍了安装配置步骤:安装VSCode/TRAE、Cppcheck软件、配置插件参数、安装Python环境,并重点说明了MISRA规则文件的设置方法。通过完整的配置流程,实现了嵌入式开发环境下静态检查与安全标准的落地。

SDFangFang2025的博客 1282

SpringBoot热加载

使用SpringBoot开发的时候,修改完程序之后,需要手动点击重启,才能让修改生效,比较麻烦,也占用了更多的时间。 其实可以通过一些插件,实现修改之后的热加载,并且只加载修改部分,从而也提高了效率。 方式一:使用JRebel //todo 方式二:使用spring-boot-devtools //todo 方式三:使用springloaded //todo ...

u014365523的博客 5247

手把手教你用Wireshark国密版分析TLCP和IPSec协议(附下载地址)

本文详细介绍了Wireshark国密版在TLCP和IPSec协议分析中的实战应用,包括环境配置、协议解析、合规性检查及高级分析技巧。该工具针对商用密码算法(如SM2/SM3/SM4)进行了专项优化,支持GB/T 38636-2020 TLCP和GB/T 36968-2018 IPSec VPN等国家标准,帮助开发者与安全工程师高效完成密评分析任务。

weixin_29325955的博客 553

LTspice仿真三线制PT100高精度测温系统设计

本文详细介绍了如何使用LTspice仿真设计三线制PT100高精度测温系统。文章从三线制原理出发,逐步讲解了在LTspice中建模PT100、构建惠斯通电桥进行信号转换、设计差分放大与滤波电路、选型ADC以及进行系统联调与误差分析的全过程,旨在帮助工程师实现0.5°C分辨率的工业测温方案设计。

pz89012345的博客 98

Spring Boot应用热加载

概述; 方案:IDEA;Mybatis mapper;spring-boot-devtools;模板热加载;Spring Loaded;JRebel; 引申:减少控制台打印输出;热部署、热加载、热更新;

lonelymanontheway的博客 3870

使用亚组分析进行子组分析并可视化森林图 - R语言

通过亚组分析和森林图的结合,我们可以更好地理解不同子组之间的差异和效果大小。当然,在实际应用中,还需要考虑多种因素,如样本量、异质性等,以得到更准确的结果和结论。每个森林图中的水平线代表了每个子组的效应估计,线的长度表示了该效应估计的置信区间。假设我们有一个包含研究对象的数据框(data frame),其中包括了治疗组和对照组的结果数据,以及一些可能的影响因素作为调整变量。在本例中,我们将比较两种不同的治疗方法(A和B)对结果变量的影响,并调整了一个额外的变量。是结果变量和对照组变量的列名。

2301_79326857的博客 1236

SpringBoot热部署

SpringBoot热部署热部署和热加载的区别Tomcat实现热部署 热部署和热加载的区别 热部署就是将打包后的应用直接替换原有的应用,不用关闭或者重启服务器,侧重的是在服务器运行时重新部署项目。 热加载就是将修改后的文件提交到服务器,程序自动加载修改后的字节码文件,热加载只是在运行时重新加载修改后的文件。 实现原理的区别: 热部署直接重新加载整个应用,内存释放比较干净,但是也比较耗时。 热加载主...

LuQiaoYa的博客 2737

qwen2vl ValueError: Image features and image tokens do not match: tokens: 568, features 600

本文介绍了一个用于计算多模态数据集中样本token数量的Python工具,特别针对包含文本和图像的Qwen2-VL模型数据集。

q742971636的博客 1012

【推荐100个unity插件】性能极高的逼真爆炸、火焰和烟雾效果——UNI VFX

这是一篇关于Unity中高性能GPU粒子特效插件UNI VFX的使用指南。文章介绍了该插件提供逼真的爆炸、火焰和烟雾效果,支持URP和HDRP渲染管线。主要内容包括:插件安装方法(需预先安装Visual Effect Graph和Shader Graph包)、事件系统使用方法(如create/loop/stop等事件控制)、特效分类(自动结束型和持续型特效)、检视面板配置技巧以及性能优化建议(特别提醒灯光特效对性能的影响较大)。文末还推荐了多个Unity开发相关的专栏内容。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1490

设置idea实现热部署__使用spring-boot-devtools

加入依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <version>2.0.4.RELEASE</version> </dependency> 设置idea: 快捷键:shift+alt+ctrl+/ 重启idea就生

qq_37432174的博客 721

ICM20948 DMP代码详解(54)

ICM20948 DMP代码详解(54)

phmatthaus的专栏 424

『IDEA』代码热部署和热加载

在日常开发中,我们需要经常修改 Java 代码,手动重启项目,查看修改后的效果。如果在项目小时,重启速度比较快,等待的时间是较短的。但是随着项目逐渐变大,重启的速度变慢,等待时间 1-2 min 是比较常见的我们可以使用代码热加载和热部署解决该问题,目前实现方案主要有如下三种spring-boot-devtools【不推荐】IDEA 自带 HowSwap 功能【推荐】JRebel 插件【最推荐】严格意义上,我们需要区分下热部署和热加载。

ReturnTmp的博客 5537

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Java笔记:SpringBoot热部署与热加载

课程介绍 1、热部署使用场景 本地调试 线上发布 2、优点 本地、线上都适用 无需重启服务器 3、前置知识 Java语言 Spring开发经验 构建SpringBoot项目 4、课程大纲 热部署原理分析 案例分析 项目演示 测试 发布程序 课程总结 热部署与热加载 1、Java热部署与热加载联系 不重启服务器编译/部署项目 基于Java的类加载器实现 2、Java热部署与热加载区别 2.1、部署方式 热部署在服务器运行时重新部署项目 热加载在运行时重新加载class 2.2、实现原理

彭世瑜的博客 3448

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SpringBoot配置热部署Dev-tools

热部署和热加载是在应用正在运行的时候,自动更新(重新加载或者替换class等)应用的一种能力。spring-boot-devtools提供的方案也是要重启的,只是无需手动重启能实现自动加载而已。热部署在服务器运行时重新部署项目它是直接重新加载整个应用,这种方式会释放内存,比热加载更加干净彻底,但同时也更费时间。热加载在运行时重新加载class,从而升级应用。热加载的实现原理主要依赖类加载器子系统。

杰尼龟的小龟壳的博客 2461

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SpringBoot入门-配置热部署devtools工具

LiveLoad是提供浏览器客户端自动加载更新的工具,分为LiveLoad服务器和Liveload浏览器插件两部分;devtools中已经集成了LiveLoad服务器,所以如果我们开发的是web应用,并且期望浏览器自动刷新, 这时候可以考虑LiveLoad。同一时间只能运行一个LiveReload服务器。开始应用程序之前,请确保没有其他LiveReload服务器正在运行。如果从IDE启动多个应用程序,则只有第一个应用程序将支持LiveReload。

qq_34193201的博客 2088

SpringBoot+gradle+idea实现热部署和热加载

前言 因为之前使用myeclipes的同学就知道,在使用myeclipes的时候,java文件或者jsp文件写完之后会被直接热加载到部署的容器中,从而在开发的时候,不同经常去重启项目,从而达到了增加开发效率的目的。 但是现在切换到SpringBoot之后,因为没有外部容器的支持,而且使用gradle去构建项目,再加上idea默认不会自动编译的特性,最终导致开发项目的时候需要经常重启项目,这是我...

zljiuy的专栏 1946

【保姆级】IDEA SpringBoot热部署及遇到的坑

IDEA SpringBoot热部署及遇到的坑前言概念(遇到的坑)触发机制IDEA自动保存不会触发热部署?热部署与热加载热部署配置前提:开启自动编译SpringLoaded方式实现热部署Springboot-devtools方式实现热部署其他 前言 作为一个小白,在开始做SpringBoot项目时,每次手动修改一点点地方都需要手动重启,真是又费时又费力。于是开始研究SpringBoot的热部署,中间遇到些问题,自己研究了很久大概明白了一些(百度下来全都是千篇一律,也真是不想吐槽了),有不正确的地方欢迎指正。

一花一世界 5718

SpringBoot热部署详解

热部署,就是不需要停掉服务,可以线上改,改完立马生效。

知足上进,不负野心。 2万+

springboot之热部署

1、热部署的使用场景:线上发布、本地调试。 2、热部署的优点: 无论线上发布还是本地调试,都适用; 无需重启服务器: ——提高开发、调试效率。 ——提升发布、运维效率,降低运维成本。 3、热部署和热加载的联系和区别: 联系: ——不重启服务器编译/部署项目 ——基于Java的类加载...

domiの博客 2519

[SpringBoot系列]热部署

本文涉及热部署的实现原理、手动启动热部署、自动启动热部署、参与热部署监控的文件范围配置、关闭热部署

十八岁讨厌编程的博客 1671

IDEA使用SpringBoot实现热部署和热加载

IDEA使用SpringBoot实现热部署和热加载一、使用maven在pom文件中添加依赖二、在springboot的配置文件中添加相关配置三、IDEA的配置修改五、重启IDEA之后查看是否生效,如不生效重启电脑。 idea使用Springboot的devtools实现热加载不能想eclipse那样添加jar报就能实现,要使用一些配置修改。 一、使用maven在pom文件中添加依赖 <dep...

weixin_44715918的博客 501

Spring boot热部署的作用和原理

Spring boot热部署的作用和原理前言一、Spring boot热部署的作用1.什么是SpringBoot热部署2.什么项目重启3.什么静态文件4.如何使用Spring boot热部署二、Spring boot热部署的原理总结 前言 在实际开发过程中,每次修改代码就得将项目重启,重新部署,对于一些大型应用来说,重启时间需要花费大量的时间成本。而SpringBoot中启用热部署后就变成了非常简单的一件事,因为SpringBoot为我们提供了一个非常方便的工具spring-boot-de.

weixin_43373745的博客 4656
上一篇: 聊聊消息中心的设计与实现逻辑
下一篇: Spring 核心概念
JavaShark
博客等级 码龄4年 184粉丝 438原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值