SpringBoot实现热部署主要依赖的是DevTools工具,IDEA可以在新建SpringBoot项目时勾选DevTools选项:

或者手动在pom.xml中添加DevTools依赖的相关jar:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><!--optional=true 依赖不会传递,该项目依赖devtools之后依赖该项目的项目如果想要使用devtools,需要重新导入--><optional>true</optional>
</dependency>

这里需要解释一下下,<optional>true</optional>在这里指的是该项配置不会传递,即该项目依赖了DevTools,之后的项目如果依赖了该项目的话,需要重新引用DevTools。看到一些文章中说没有该项的话热部署不会生效,但是我这里如果注掉的话也会生效,暂时还不太清楚什么原因。欢迎各位大佬帮我解答一下这两个疑惑。

完成了这些之后,在SpringBoot项目中其实已经实现了热部署,即修改Java代码后项目会自动重新启动,最明显的额效果就是控制台会打印项目重启的log。其实现在也已经实现了页面的热部署,即修改jsp、js等文件后不需要重启项目,也会立即生效。

还有很重要的一点,如果你使用的是IDEA,需要做一个很重要的配置,否则热部署是不会生效的(这也是之前困扰我很久的一个问题,翻遍了配置文件找不到哪里有错)。

IDEA的话默认是不会去帮你自动编译的

打开Settings,选择Compiler

这个勾需要打上,开启自动编译

Ctrl+Shift+Alt+/,选择Registry

compiler.automake.allow.when.app.running后面的勾也需要打上

至此,IDEA中SpringBoot集成DevTools实现热部署也实现了。

这里大概说一下我对DevTools实现热部署的理解。DevTools会监听classpath下的文件变动,并且会在保存文件时立即重启应用。因为采用的是虚拟机机制,所以重启很快。其实类加载器有base classloaderrestart classloader,前者加载不改变的class,例如第三方的jar包,后者主要加载正在开发的class。之所以重启很快,是因为重启的时候只是加载了在开发的class,没有重新加载第三方的jar包。

SpringBoot实现热部署相关推荐

  1. SpringBoot项目热部署配置

    SpringBoot配置热部署后修改代码, 无需重启即可看到修改效果. pom引入spring-boot-devtools依赖 <!--SpringBoot热部署配置 --> <de ...

  2. SpringBoot 配置热部署

    SpringBoot 配置热部署 先来说一说热部署具体有什么样的神奇作用? 再我们平常编写一个web项目时,都知道如果修改html或者jsp这些前端页面,我们浏览器刷新,是可以实时更新的.但是如果修改 ...

  3. SpringBoot 实现热部署

    #SpringBoot实现热部署 ##1.添加依赖 <!-- 热部署 --> <dependency><groupId>org.springframework.bo ...

  4. springboot项目热部署

    原理 非springboot项目热部署实现原理:服务器去监控其中加载的应用,发现产生了变化就重新加载一次. springboot项目热部署实现原理:基于springboot开发的web工程其实有一个显 ...

  5. 关于在IDEA上开发springboot及其热部署等等问题

    耗费了我两天一夜的时间,一把辛酸泪,所以要记录一下 1:IDEA方面 这个IDEA,真的是又爱又恨,喜欢他的操作模式,界面等等一系列,但是麻烦的是很多都跟eclipse不同,大大的不适应,刚开始肯定极 ...

  6. Intellij IDEA SpringBoot项目热部署解决方案

    第一步:在项目pom文件中导入依赖 <dependency><!--Spring 官方提供的热部署插件 --><groupId>org.springframewor ...

  7. SpringBoot官方热部署和远程调试神器,真带劲!

    平时使用SpringBoot开发应用时,修改代码后需要重新启动才能生效.如果你的应用足够大的话,启动可能需要好几分钟.有没有什么办法可以加速启动过程,让我们开发应用代码更高效呢?今天给大家推荐一款Sp ...

  8. SpringBoot 实现热部署有哪几种方式

    主要有两种方式: Spring Loaded Spring-boot-devtools 引用devtools依赖 org.springframework.boot spring-boot-devtoo ...

  9. 【SpringBoot】springboot启动热部署

    个人简介:Java领域新星创作者:阿里云技术博主.星级博主.专家博主:正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ SpringBoot--手工启 ...

最新文章

  1. 一不小心,删错了,还把回收站清空了,咋办啊?
  2. B 站的前端崩了,后端的你别慌!
  3. 文本超出隐藏 综合整理
  4. 【Netty】NIO 缓冲区 ( Buffer ) 组件
  5. vb.net中类型转换
  6. 推荐搞IT的你读读《软件随想录》
  7. linux “命令行自动补全”功能用命令
  8. [转]配置nginx+apache 其中动态由apache处理,静态由nginx处理
  9. bzoj 2435: [Noi2011]道路修建(DFS)
  10. UVa 10499 - The Land of Justice
  11. 30天自制操作系统 pdf_30天自制操作系统-汇编实现初版镜像
  12. netperf-2.7.0 交叉编译
  13. 启动虚拟机异常(超完整版)Win10
  14. java精选视频资源,收藏慢慢看!
  15. Gym 100818F Irrational Roots (数学)
  16. 对校招生培养工作的建议_贵单位对我校学生培养工作有何建议
  17. 4070显卡相当于什么水平 4070显卡参数 rtx4070显卡功耗
  18. 国行ps4服务器维护,赶快回家试试!国行PS4终解除锁区附详解教程
  19. 安卓手机+python基于abd命令的自动打卡
  20. arcgis js 4 风场可视化

热门文章

  1. python绘制樱花洒落_Python画图之浪漫樱花
  2. devtools最新安装方法
  3. day08 String类
  4. Python3 * 和 ** 运算符
  5. [Mybatis]Cannot convert string '\xAC\xED\x00\x05ur...' from binary to utf8mb3
  6. 语音广播服务器,网络语音广播主机-文字语音转换设备 - 航天信广
  7. 述职PPT无从下手?每一页都分为三个部分
  8. 组原7_程序查询和程序中断方式
  9. android中Mms学习笔记——信息发送流程(一)
  10. 常用输入设备——键盘、鼠标、手写输入与触摸屏、传感器