在该篇文章开始前,我先说一句: 
本人觉得,了解下阔以,实用性不大。


好,接下来我们来一起编码:

首先我们是基于IDEA(如果你是用Eclipse,你直接跳过这设置环节完后看就行),要实现热部署的前提就是,我们修改代码,要让项目自动重新编译。那么IDEA里面就需要设置一下,
 ① 点击'File’---‘Settings’,搜索'Compiler',然后勾选 Build project automatically:

Springboot 整合devtools实现热部署_springboot

 ② 在IDEA 按快捷键 Ctrl+Shift+Alt+/  ,进入页面点击 ‘registry’,勾选‘complier.automake.allow.when.app.running’:

Springboot 整合devtools实现热部署_spring_02


Springboot 整合devtools实现热部署_devtools_03

ps:如果你的快捷键错了或者改过了,可以在 点击'File’---‘Settings’,搜索'Maintenance',看下快捷键或者重新设置一下。

设置完毕,接着我们开始导入依赖:

<!--热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<!-- optional=true,依赖不会往下传递,如果有项目依赖本项目,并且想要使用devtools,需要重新引入 -->
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>

然后是修改下pom.xml里面的插件配置:

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- 没有该项配置,测试devtools不起作用 -->
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>
</plugins>
</build>

记下来是application.properties添加相关配置:

#服务端口
server.port=8055

#开启热部署
spring.devtools.restart.enabled=true

#自定义key/value 值
test-key=JCccc-test-key-one

最后,开始进入测试环节:

 

创建TestController.java ,写个测试的接口:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
* @Author : JCccc
* @CreateTime : 2019/10/12
* @Description :
**/


@RestController
public class TestController {


@Value(value = "${test-key}")
private String testKey;


@GetMapping("testApi")
public String testHotDeployment() {

return "Wonderful :"+testKey;


}

}

运行项目,调用接口:

Springboot 整合devtools实现热部署_spring_04

接下来我们直接修改接口代码,修改后保存一下,

Springboot 整合devtools实现热部署_springboot_05

可以看到编译器控制台输出了(这些检测到我们修改了自动编译打印输出的日志):
PS:如果你一直发现没有输出这些日志,也许是卡了。本人在电脑跑很多项目,发现有时IDEA会出现自动编译延迟的情况。

Springboot 整合devtools实现热部署_idea_06

然后再调用接口,可以看到热部署效果实现了:

Springboot 整合devtools实现热部署_devtools_07