一、热部署原理
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 热部署内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论