微服务:本地热部署
简介
在项目开发中,难免会经常修改代码来验证一些问题,如果每次修改都需要进行重新关闭、启动这样的操作会让人有点不爽,如果能实现代码的热部署就好了。
所谓热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。通俗来讲,热部署就是在修改代码后,不需要重新启动服务器,就可以加载修改后的代码,看到修改后的效果。对于 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,如下:
1 | <!--Devtools--> |
在 build 标签下增加 configuration/fork
配置,如果没有该项配置,devtools 不会起作用,即应用不会重启。
1 | <build> |
2、修改IDEA编译选项
在IDEA中打开 File/Settings
,如下图所示:
3、修改IDEA中的Registry
在 IDEA 中 Help/Find Action...
,打开下面的对话框,输入registry 进行搜索,如下图:
双击 Registry,出现下面弹框,如图操作,选中 Compiler autoMake allow when app running
即可。
也可以使用快捷键 ctrl + shift + alt + /
打开 Registry,如图:
4、重新启动项目
重新运行项目进行验证。
1 |
|
浏览器打开:http://localhost:8080/user 可以看到效果。
修改原来的 user
方法和增加一个 user2
方法,再来验证。
1 |
|
分别在浏览器打开:http://localhost:8080/user 和 http://localhost:8080/user2
现在不需要在 IDEA 中重新启动、关闭这种麻烦操作了。
如果你足够细心就会发现,使用 devtools 后,每次修改控制台自动的重新启动了 Spring Boot 项目,所以 devtools 是使用了重新部署的方式从而实现了热部署的功能。
注意几个问题
1、代码修改不会立即生效
随着工程越来越大,修改代码或者配置后需要稍等几秒钟(一般3s以内)就会自动重新启动工程,控制台就会看到日志的输出。
2、代码修改后控制台没有自动的重新启动工程
这个就需要按照这篇文章说的,重新检查一下如下设置:
- pom 文件,检查一下是否把必要的配置被修改了。
- IDE 的设置是否和本文一致。
改变,从你我相识开始~