SpringBoot 热部署加持 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
hansonwang99
V2EX    程序员

SpringBoot 热部署加持

  •  
  •   hansonwang99
    hansonwang99 2018-06-22 20:38:12 +08:00 4057 次点击
    这是一个创建于 2736 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 实践文章在此:


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


    11 条回复    2018-06-24 10:01:27 +08:00
    lhx2008
        1
    lhx2008  
       2018-06-22 20:42:21 +08:00 via Android
    没卵用,和 tomcat 的差不多,比 JREBEL 差远了
    subspace
        2
    subspace  
       2018-06-22 20:44:12 +08:00
    我平时使用的是 Jrebel 来热部署。
    pom.xml 加了“ spring-boot-starter-tomcat ”这个依赖
    CDuXZMAPgHp1q9ew
        3
    CDuXZMAPgHp1q9ew  
       2018-06-22 22:10:59 +08:00
    用外置 tomcat 起应用, 自带热加载, 比配置这个方便多了.
    letitbesqzr
        4
    letitbesqzr  
       2018-06-22 22:21:03 +08:00
    在开发模式下:这方案和 jrebel 没法比吧,毕竟 jrebel 对各主流框架进行了处理,比如重扫描 RequestMapping
    在生产环境下: 任何热部署方案都没 Blue/Green Deployment 来的实在。
    azygote
        5
    azygote  
       2018-06-22 22:23:48 +08:00
    devtools 没 jrebel 好用
    hansonwang99
        6
    hansonwang99  
    OP
       2018-06-22 22:49:54 +08:00 via iPhone
    向楼上各位大佬致敬
    bianjp
        7
    bianjp  
    PRO
       2018-06-23 00:16:34 +08:00
    JRelbel 确实好用,但价格实在太贵了($550 每年),是 IntelliJ IDEA 的好几倍,用不起。
    hlwjia
        8
    hlwjia  
    PRO
       2018-06-23 00:21:42 +08:00
    请问,头图是什么意思?
    looplj
        9
    looplj  
       2018-06-23 10:06:42 +08:00
    这个也值得写个文章。。
    Flicker
        10
    Flicker  
       2018-06-23 11:06:48 +08:00 via Android
    在用 jrebel,之前免费就注册了个账号。
    erosripe
        11
    erosripe  
       2018-06-24 10:01:27 +08:00 via Android
    这个 V2EX 不是写个入门。。就会火的,些入门会被喷的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1316 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 17:06 PVG 01:06 LAX 09:06 JFK 12:06
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86