微服务:本地热部署

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/AndroidBluetooth/article/details/94348974

原文 微服务: 本地热部署,CSDN同步发布。

转载请注明出处,谢谢!


简介

在项目开发中,难免会经常修改代码来验证一些问题,如果每次修改都需要进行重新关闭、启动这样的操作会让人有点不爽,如果能实现代码的热部署就好了。

所谓热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。通俗来讲,热部署就是在修改代码后,不需要重新启动服务器,就可以加载修改后的代码,看到修改后的效果。对于 IDEA 来说,热部署就是不需要反复的通过开始、停止来进行项目的启动,而是修改代码保存后自动加载修改后的代码。

Spring Boot 提供了热部署能力。可以使用 Spring Boot Loader 的方式,也可以使用 Spring Boot Devtools的方式来进行,二者实现方式是不同的,大致总结如下:

Spring Boot Loader:真正的热部署。

Spring Boot Devtools:重新部署来实现热部署。

这两种热部署也是本地热部署,真正的远程服务器热部署方案另有方案,这个不是今天分享的点后续牵涉到部署方案再说!今天只分享如何使用 devtools 实现 Spring Boot 项目的热部署。

spring-boot-devtools

在 IDEA 中使用 devtools 需要修改 IDEA 的设置和工程的 pom 文件,具体操作步骤如下。

1、修改pom.xml文件,增加devtools

在pom.xml文件中的dependency下增加devtools,如下:

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

在 build 标签下增加 configuration/fork 配置,如果没有该项配置,devtools 不会起作用,即应用不会重启。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <fork>true</fork>
            </configuration>
        </plugin>
    </plugins>
</build>

2、修改IDEA编译选项

在IDEA中打开 File/Settings,如下图所示:

3、修改IDEA中的Registry

在IDEA中Help/Find Action…,打开下面的对话框,输入registry进行搜索,如下图:
1555860471904

双击Registry,出现下面弹框,如图操作,选中 Compiler autoMake allow when app running 即可。
1555860471904

也可以使用快捷键 ctrl + shift + alt + / 打开Registry,如图:
1555860471904

4、重新启动项目

重新运行项目进行验证。

@RequestMapping(value = "/user")
public String user() {
    return "Greate user!";
}

浏览器打开:http://localhost:8080/user 就可以看到效果。

修改原来的 user 方法和增加一个 user2 方法,再来验证。

@RequestMapping(value = "/user")
public String user() {
	return "Greate user, welcome!";
}

@RequestMapping(value = "/user2")
public String user2() {
	return "Greate user!";
}

分别在浏览器打开:http://localhost:8080/user 和 http://localhost:8080/user2
外链图片转存失败

现在不需要在 IDEA 中重新启动、关闭这种麻烦操作了。

如果你足够细心就会发现,使用 devtools 后,每次修改控制台自动的重新启动了 Spring Boot 项目,所以 devtools 是使用了重新部署的方式从而实现了热部署的功能。

注意几个问题

1、代码修改不会立即生效

随着工程越来越大,修改代码或者配置后需要稍等几秒钟(一般3s以内)就会自动重新启动工程,控制台就会看到日志的输出。

2、代码修改后控制台没有自动的重新启动工程

这个就需要按照这篇文章说的,重新检查一下如下设置:

  • pom 文件,检查一下是否把必要的配置被修改了。
  • IDE 的设置是否和本文一致。

改变,从你我相识开始~

展开阅读全文

没有更多推荐了,返回首页