热部署与SpringBoot热部署

热部署SpringBoot热部署

SpringBoot热部署学习网址:https://www.imooc.com/video/16054

在开发过程中,我们往往会用到各种框架来提高我们的开发的效率,而SpringBoot则是现今很火的一个微服务架构。其设计的目的是用来简化,Spring应用的初始搭建以及开发过程,该框架使用了特定的方式进行配置,从而使开发人员不再需要定义样板化配置。当我们学习了SpringBoot,就不得不提SpringBoot中的热部署功能。

什么是热部署呢?就是指在你修改项目BUG的时候或对java类进行修改在不重启服务器的前提下能让修改生效。多使用在本地调试或者线上发布,当我们的项目配置了热部署功能,那么我们的系统就能全年不间断运行,即使重新发布程序也不需要重启服务器。同时,热部署能提高开发人员的开发、调试效率与发布、运维效率的提升,降低运维成本。

在学习SpringBoot热部署之前我们先了解一下java热部署与热加载:

热部署是在服务器运行时重新部署项目,将打包好的项目直接替换以前的项目,不用关闭或者重启服务器。

热加载是在运行时重新加载class,修改java代码以后不需要停掉java服务,将修改并编译后的java字节码提交到服务器,程序自动加载字节码文件。

热部署原理解析:

Java类的加载过程:

初始化JVM--->产生启动类加载(ClassLoader)---->标准扩展类加载器---->系统类加载器---->加载class文件

JVM加载类一般分为五个阶段:

  1. 加载:找到类的静态存储结构,加载类到虚拟机然后转化成方法区运行时的数据结构,生成class对象
  2. 验证:确保字节码是安全的,不会对虚拟机造成危害,可以通过启动参数来禁用一些验证
  3. 准备:确定内存布局,初始化类变量比如int a = 0;
  4. 解析:将符号引用转换为直接引用
  5. 初始化:调用程序自定义的初始化代码

通过配置Tomcat实现java类热部署:

  1. 直接把项目web文件放入Tomcat的webapps里面
  2. 在Tomcat\conf\server.xml中的<host></host>内部增加<Context/>标签

<Context debug="0"  docBase="D:/Imooc/web"  path="/hot(端口号后面的路径)"  privileged="true"  reloadable="true"/>

  1. 在%tomcat_home%\conf\Catalina\localhost中添加一个xml文件

hot.xml内容:<?xml version="1.0" encoding="UTF-8"?>

  <Context docBase="D:/Imooc/web" reloadable="true">

了解了上面的热部署,那么我们再来学习SpringBoot热部署就简单多了。使用SpringBoot进行热部署有两种方式:

  1. 使用Springlaoded(依赖配置在build中的spring-boot-maven-plugin插件中),必须要使用mvn spring-boot:run来允许才有效果
  2. 直接在pom.xml中导入devtools依赖就可以(推荐使用)

<dependency>

   <groupId>org.springframework.boot</groupId>

   <artifactId>spring-boot-devtools</artifactId>

   <optional>true</optional>

<scope>true</scope>

</dependency>

 

由于热部署是监听Class文件的变化,它自身不会主动去编译java文件,所以我们得在java文件改动时,设置自动编译成Class文件;而且在热部署的时候是产生了新的类加载器,我们的一个类可能在虚拟机中存在两个类,就比如代码中一个User类,但是虚拟机中会存在两个User类,虽然是同一个Class文件,但是却是两个独立的类。

当我们使用SpringBoot热部署之后就可以随意修改代码而不用重启服务器,它会自动去加载改变后的Class文件,就少了要不停重启服务器的麻烦,提高我们工作、开发、维护的效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值