SpringCloud使用spring-boot-devtools 进行热部署的实现

 更新时间:2025年10月27日 10:09:02   作者:No8g攻城狮  
本文主要介绍了Spring Cloud使用spring-boot-devtools进行热部署,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、热部署原理

springloaded 并不能实现这些修改的热部署。spring-boot-devtools 是一个为开发者服务的模块,其中最重要的功能就是自动实现把更新的应用代码更改到最新的 APP 上。其工作原理是在发现代码有更改之后,自动重新启动应用,但是速度 比手动停止后再启动要更快。其深层原理是使用了两个 ClassLoader,一个 ClassLoader 加载那些不会改变的类(例如第三方的 Jar 包依赖),另一个 ClassLoader 加载会更改的类,称为 Restart ClassLoader。这样在有代码更改的时候,原来的 Restart ClassLoader 被丢弃,重新创建一个 Restart ClassLoader 加载更新的类,由于所需要加载的类相对而言比较少,所以实现了较快的重启。

二、集成Springboot步骤

2.1 步骤一

在项目的pom文件中添加 Web 开发的启动器配置。

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

2.2 步骤二

在项目的pom文件中添加 spring-boot-devtools 的依赖配置

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

2.3 步骤三

注意,还需要加入 spring-boot-maven-plugin

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<configuration>
				<!-- 如果没有该项配置,devtools不会起作用,即应用不会restart -->
				<fork>true</fork>
			</configuration>
		</plugin>
	</plugins>
</build>

三、热部署无效原因排查

开发中如果出现了 spring-boot-devtools 不能实现热部署,一般可能是以下几个原因中的一个引起的,可自行排查:

1、对应的 spring-boot 版本是否正确。本书中使用的是 2.0.0 版本。
2、是否加入了 plugin 以及属性 true>/fork>。
3、Eclipse Project 是否开启了 Build Automatically 自动编译的功能。
4、如果设置 SpringApplication.setRegisterShutDownHook(false),则自动重启将不再起作用。

到此这篇关于SpringCloud使用spring-boot-devtools 进行热部署的实现的文章就介绍到这了,更多相关spring-boot-devtools 热部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java经典设计模式之责任链模式原理与用法详解

    Java经典设计模式之责任链模式原理与用法详解

    这篇文章主要介绍了Java经典设计模式之责任链模式,简单说明了责任链模式的概念、原理,并结合实例形式分析了java实现责任链模式的具体用法与相关注意事项,需要的朋友可以参考下
    2017-08-08
  • 详解Java二叉排序树

    详解Java二叉排序树

    这篇文章主要介绍了Java二叉排序树,包括二叉排序树的定义、二叉排序树的性质、二叉排序树的插入和查找等,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • 关于java方法区详解

    关于java方法区详解

    这篇文章主要介绍了关于java方法区的使用解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • 深入解析Spring AI框架如何在Java应用中实现智能化交互的关键

    深入解析Spring AI框架如何在Java应用中实现智能化交互的关键

    本文详细介绍了SpringAI框架在Java应用中的应用,包括实体类映射、函数回调等核心功能的实现,通过源码分析,帮助开发者更好地理解和使用这些高级特性,提升业务效率,感兴趣的朋友跟随小编一起看看吧
    2024-11-11
  • IDEA 搭建maven 安装、下载、配置的图文教程详解

    IDEA 搭建maven 安装、下载、配置的图文教程详解

    这篇文章主要介绍了IDEA 搭建maven 安装、下载、配置,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Java字符串拼接+和StringBuilder的比较与选择

    Java字符串拼接+和StringBuilder的比较与选择

    Java 提供了两种主要的方式:使用 "+" 运算符和使用 StringBuilder 类,本文主要介绍了Java字符串拼接+和StringBuilder的比较与选择,感兴趣的可以了解一下
    2023-10-10
  • SpringSecurity 手机号登录功能实现

    SpringSecurity 手机号登录功能实现

    这篇文章主要介绍了SpringSecurity 手机号登录功能实现,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2023-12-12
  • SpringBoot 中大文件(分片上传)断点续传与极速秒传功能的实现

    SpringBoot 中大文件(分片上传)断点续传与极速秒传功能的实现

    这篇文章主要介绍了SpringBoot 中大文件(分片上传)断点续传与极速秒传功能的实现,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 在MyBatis-Plus中关闭SQL日志输出的方法

    在MyBatis-Plus中关闭SQL日志输出的方法

    在使用MyBatis-Plus开发Java应用程序时,随着项目的复杂性提升,SQL日志的输出可能会导致日志文件变得庞大,影响系统的性能和可维护性,本文将介绍如何在Spring Boot项目中关闭MyBatis-Plus的SQL日志输出,感兴趣的朋友一起看看吧
    2025-04-04
  • Spring—@Value在static中引用方式

    Spring—@Value在static中引用方式

    这篇文章主要介绍了Spring—@Value在static中引用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09

最新评论