SpringCloud使用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 热部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
深入解析Spring AI框架如何在Java应用中实现智能化交互的关键
本文详细介绍了SpringAI框架在Java应用中的应用,包括实体类映射、函数回调等核心功能的实现,通过源码分析,帮助开发者更好地理解和使用这些高级特性,提升业务效率,感兴趣的朋友跟随小编一起看看吧2024-11-11
Java字符串拼接+和StringBuilder的比较与选择
Java 提供了两种主要的方式:使用 "+" 运算符和使用 StringBuilder 类,本文主要介绍了Java字符串拼接+和StringBuilder的比较与选择,感兴趣的可以了解一下2023-10-10
SpringBoot 中大文件(分片上传)断点续传与极速秒传功能的实现
这篇文章主要介绍了SpringBoot 中大文件(分片上传)断点续传与极速秒传功能的实现,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-07-07


最新评论