原理

非springboot项目热部署实现原理:服务器去监控其中加载的应用,发现产生了变化就重新加载一次。
springboot项目热部署实现原理:基于springboot开发的web工程其实有一个显著的特征,就是tomcat服务器内置了。本来我们期望于tomcat服务器加载程序后由tomcat服务器盯着程序,你变化后我就重新启动重新加载,但是现在tomcat和我们的程序是平级的了,都是spring容器中的组件,这下怎么办?我们可以再搞一个程序X在spring容器中盯着你原始开发的程序A,这个X程序springboot已经帮我们写好了,我们只需要导入坐标就行。

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

手动启动热部署

每次进行热部署都需要开发者手工操作,不管是点击按钮还是快捷键都需要开发者手工执行。

设置步骤
1.导入坐标
2.构建项目,可以使用快捷键激活此功能

原理:
​ 一个springboot项目在运行时实际上是分两个过程进行的,根据加载的东西不同,划分成base类加载器与restart类加载器。

  • base类加载器:用来加载jar包中的类,jar包中的类和配置文件由于不会发生变化,因此不管加载多少次,加载的内容不会发生变化
  • restart类加载器:用来加载开发者自己开发的类、配置文件、页面等信息,这一类文件受开发者影响

当执行构建项目后,由于jar中的信息不会变化,因此base类加载器无需再次执行,所以仅仅运行restart类加载即可,也就是将开发者自己制作的内容重新加载就行了,这就完成了一次热部署的过程,也可以说热部署的过程实际上是重新加载restart类加载器中的信息。

自动启动热部署

代码修改完毕程序自己执行热部署功能

设置步骤:
1.设置自动构建项目。​ 打开【File】,选择【settings…】,在面板左侧的菜单中找到【Compile】选项,然后勾选【Build project automatically】,意思是自动构建项目
2.允许在程序运行时进行自动构建。​ 使用快捷键【Ctrl】+【Alt】+【Shit】+【/】打开维护面板,选择第1项【Registry…】

​ 在选项中搜索comple,然后勾选对应项即可

IntelliJ IDEA中的注册表中开启compiler.automake.allow.when.app.running选项,此选项在IntelliJ IDEA 2021.2之后的版本迁移到高级设置中。

注:如果你每敲一个字母,服务器就重新构建一次,这未免有点太频繁了,所以idea设置当idea工具失去焦点5秒后进行热部署。其实就是你从idea工具中切换到其他工具时进行热部署,比如改完程序需要到浏览器上去调试,这个时候idea就自动进行热部署操作。

参与热部署监控的文件范围配置

​ 通过修改项目中的文件,你可以发现其实并不是所有的文件修改都会激活热部署的,原因在于在开发者工具中有一组配置,当满足了配置中的条件后,才会启动热部署,配置中默认不参与热部署的目录信息如下:

/META-INF/maven
/META-INF/resources
/resources
/static
/public
/templates

以上目录中的文件如果发生变化,是不参与热部署的。如果想修改配置,可以通过application.yml文件进行设定哪些文件不参与热部署操作:

spring:devtools:restart:# 设置不参与热部署的文件或文件夹exclude: static/**,public/**,config/application.yml

关闭热部署

线上环境运行时是不可能使用热部署功能的,所以需要强制关闭此功能,通过配置可以关闭此功能。

spring:devtools:restart:enabled: false

​ 如果当心配置文件层级过多导致相符覆盖最终引起配置失效,可以提高配置的层级,在更高层级中配置关闭热部署。例如在启动容器前通过系统属性设置关闭热部署功能。
​ 其实上述担心略微有点多余,因为线上环境的维护是不可能出现修改代码的操作的,这么做唯一的作用是降低资源消耗,毕竟那双盯着你项目是不是产生变化的眼睛只要闭上了,就不具有热部署功能了,这个开关的作用就是禁用对应功能。

@SpringBootApplication
public class SSMPApplication {public static void main(String[] args) {System.setProperty("spring.devtools.restart.enabled","false");SpringApplication.run(SSMPApplication.class);}
}

springboot项目热部署相关推荐

  1. SpringBoot项目热部署配置

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

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

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

  3. idea修改代码后不重启项目_使用DevTool实现SpringBoot项目热部署

    前言 最近在开发的时候,每次改动代码都需要启动项目,因为有的时候改动的服务比较多,所以重启的次数也就比较多了,想着每次重启等待也挺麻烦的,就打算使用DevTools工具实现项目的热部署 热部署是什么 ...

  4. 2021新版IDEA实现SpringBoot项目热部署

    一.必要配置配置   首先,在pom.xml中添加devtools的maven引用: <dependency><groupId>org.springframework.boot ...

  5. IDEA配置SpringBoot项目热部署

    1.引入pom依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId> ...

  6. SpringBoot 配置热部署

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

  7. 使用Tomcat插件实现WEB项目热部署

    使用Tomcat插件实现WEB项目热部署 Tomcat热部署可以通过网页操作进行,也可以通过指定插件进行.本文介绍的是通过使用tomcat7-maven-plugin将WEB项目热部署到指定服务器的T ...

  8. SpringBoot实现热部署

    SpringBoot实现热部署主要依赖的是DevTools工具,IDEA可以在新建SpringBoot项目时勾选DevTools选项: 或者手动在pom.xml中添加DevTools依赖的相关jar: ...

  9. Spring Boot(二)——项目热部署与程序发布

    一.项目热部署 1.1 配置依赖 ① pom.xml加入devtools依赖,如果scope是provided则无法实现热部署,参考. <dependency><groupId> ...

最新文章

  1. matlab-向量的基本运算
  2. 亲手完成4大企业实战项目,挑战Python全栈高薪岗位!
  3. Docker入门-搭建docker私有仓库
  4. java应用部署docker_Docker部署JavaWeb项目实战
  5. linux hexdump显示格式c数组,hexdump命令
  6. 年近八旬教授曾一次性捐款8000多万,今获省杰出贡献奖!
  7. u盘安装CENTOS后,启动missing operating system ,只能用U盘才能启动系统
  8. 使用前台方式启动Redis时,出现Creating Server TCP listening socket 127.0.0.1:6379: bind: Address already in use报错
  9. Mybatis中的foreach
  10. python实践统计学中的三大相关性系数,并绘制相关性分析的热力图
  11. 上传项目到GitLab
  12. [JS]回调函数例子
  13. 浅谈混迹力扣和codeforces上的几个月
  14. 数据挖掘导论实验报告01
  15. 多因子模型与细分行业多因子测试源码(以医疗行业为例)
  16. linux网络接口是什么,网络接口是什么?What Is A Network Interface?--用Enki学Linux系列(1)...
  17. win7宽带无法连接解决方法
  18. Ubuntu软件管理工具
  19. 警惕“黑洞效应”?汽车芯片的“扩张”和主机厂的“枷锁”
  20. [蓝桥杯][基础练习]Sine之舞、Python

热门文章

  1. python分析每月销售数据_用Python爬虫分析演唱会销售数据
  2. P22-前端基础-CSS文档流
  3. 手机打开USB调试(VIVO)
  4. 广泛使用计算机,20世纪 年代后,计算机开始广泛使用
  5. 【转】 数学建模竞赛的准备、技巧、选题、写作等各方面得总结
  6. 第八课 决策树和随机森林
  7. OLED电视烧屏问题难解,技术的旧麻烦又碰到产品的新问题?
  8. 制作演示的福音,推荐屏幕录制软件:Adobe Captivate 2,特意使用这个录制一个简单的录制使用过程,让大家有直观印象...
  9. 死锁的处理-死锁的检测与解除
  10. iframe懒加载_如何实现图片懒加载