过早客
  • 首页
  • 节点
  • 成员
  • 广告投放
  • 登录
  • 注册

SpringBoot热部署加持

IT技术 • CodeSheep • 发表于 7 年前 • 最后回复来自 bailey • 7 年前

Ultrafine 5K


概述

进行SpringBoot的Web开发过程中,我们很多时候经常需要重启Web服务器才能保证修改的 源代码文件、或者一些诸如xml的配置文件、以及一些静态文件生效,这样耗时又低效。所谓的热部署指的是我们不需要重启Web Server就可以保证各项文件修改的立即生效。下面便来介绍一下在IDEA中进行SpringBoot的Web开发时如何加入热部署的支持。

这里我们是使用 spring-boot-devtools 来帮助完成这个事情,其是一个为开发者服务的模块,可以实现SpringBoot热部署。其机理就是 spring-boot-devtools 会监听classpath下的文件变动,变动保存生效,其就会立即重启应用。



pom.xml中添加依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
        </dependency>


设置IDEA环境自动编译

首先在编译器选项中选中自动编译工程的选项,如下图所示,

设置IDEA自动编译

接下来我们利用快捷键:Command + Shift + Alt + / 来调出Registry窗口,然后勾选其中的编译器自动编译选项,如下图所示:

设置IDEA自动编译



启动项目并实验

上面几个步骤设置完成以后,我们去项目的根目录下执行命令来启动SpringBoot应用:

mvn clean spring-boot:run

此时的效果是只要我们修改了编辑区的源代码,保存之后,应用程序便会自动重启让修改生效。



监听文件夹的变化

上面我们是修改源代码时的自动热启动,除此之外,我们还可以设置 spring-boot-devtools 来监听某个文件夹的变化,比如我们想监听某个静态文件夹下文件的变化(如html文件),当其下面的文件改变的时候能够重新启动SpringBoot,那么我们只要在配置文件 application.properties 中添加如下配置即可:

spring.devtools.restart.additional-paths = src/main/resources/templates

随后再次实验,取得的效果和之前一样,热启动便生效了



后记

  • 我的个人博客在此

作者更多的SpringBt实践文章在此:

  • SpringBoot应用部署于外置Tomcat容器
  • ElasticSearch搜索引擎在SpringBoot中的实践
  • 初探Kotlin+SpringBoot联合编程
  • Spring Boot日志框架实践
  • SpringBoot优雅编码之:Lombok加持

如果有兴趣,也可以抽点时间看看作者一些关于容器化、微服务化方面的文章:

  • 利用K8S技术栈打造个人私有云 连载文章
  • Docker容器可视化监控中心搭建
  • RPC框架实践之:Apache Thrift
  • RPC框架实践之:Google gRPC
  • 微服务调用链追踪中心搭建
  • Docker容器跨主机通信
  • Docker Swarm集群初探
  • 利用ELK搭建Docker容器化应用日志中心

作者更多 务实、能看懂、可复现的 原创文章尽在公众号 CodeSheep,欢迎订阅 ⬇️⬇️⬇️

CodeSheep


加入收藏 新浪微博 分享到微信 ❤赞 1471 次点击 0 人赞 1 人收藏

打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

共收到5条回复
gh920061138 7 年前 #1 赞 0

简单的东西请发博客

gocome 7 年前 #2 赞 0

真的可以在产品环境这么干吗?
感觉也就是开发的时候玩玩吧

qskk 7 年前 #3 赞 0

@gocome ......... 这个热部署 本来就是 开发的时候提高效率的啊!... 避免频繁重启 生产环境这样干没必要 肯定重启比较好。

destiny1020 7 年前 #4 赞 0

我看这不是还要重启服务吗,跟自己点一下restart有啥区别?

bailey 7 年前 #5 赞 0

这不叫热部署,这叫自动重启服务功能。
热部署的意思是:把代码补丁安装后,不需要重启服务器就能直接生效。
貌似也没在java中见到过真正意义的热部署,顶多是搞个集群,弄个双机热备,从而实现平滑重启服务,然后对外宣称这是热部署。

请绑定手机号后,再发言,点击此处
Guozaoke.com—源自武汉的高端交流分享社区
相关主题
搞了个网站,帮助大家找到自己想要的互联网资源!
大家用的什么AI code啊,有无白嫖途径?
招JAVA后端开发(中高级)、java实习生、前端实习生(vue)
丽岛美生小两室有人出租 不?帮人租房,孩子在华师一旁边的新学校初中上学
出akamai数据
根据 GitHub 个人贡献图生成贪吃蛇游戏,有点意思
哪个ai可以结合新闻中的图片和视频帮忙生成指定尺寸的组合图片呀?
做了个世界有趣街景网站,一刷就上瘾
小程序备案要多久
你们现在写游戏,还用unity吗?

过早客微信公众号:guozaoke • 过早客新浪微博:@过早客 • 广告投放合作微信:fullygroup50 鄂ICP备2021016276号-2 • 鄂公网安备42018502001446号