1 热部署

  优点:适用于本地和线上、无需重启服务器

2 热部署和热加载的联系和区别

  2.1 联系

    不用重启服务器就可以编译和部署项目

    都是基于Java的类加载器实现

  2.2 字面区别

    热部署在服务器运行时重新部署项目

    热加载在运行时重新加载修改后的class文件

  2.3 原理区别:热部署重新加载应用,热不是重新加载某个class文件

    热部署直接重新加载整个应用,会释放内存,比较彻底,比较耗时

    热加载是在运行时重新加载class文件,依赖Java的类加载机制,在容器启动的时候会启动一条后台线程来定时地监测类的时间戳变化,如果发现时间戳变化的class就会重新加载这个class文件,耗时较短 

  2.4 场景区别

    热部署多用于生产环境

    热加载多用于开发环境

 

3 热部署原理解析

  3.1 Java类加载过程

    初始化JVM -> 启动相关类加载器 -> 加载class文件

    Java程序运行流程: 先运行Java虚拟机,再通过类加载器将class文件加载到Java虚拟机中进行运行

    类加载的五个阶段:

      加载(找到Java类,然后加载到虚拟机中,在转化成方法区中的数据结构,从而生成class对象)

      -> 验证

      -> 准备(确定内存布局,初始化内存变量)

      -> 解析(将符号引用编程直接引用)

      -> 初始化(调用自定义的代码)

  3.2 热部署的实现方式

    类的热加载实现

    配置Tomcat来实现

4 利用spring-boot-devtools实现热部署

  idea配置链接:点击前往

知识点总会:点击前往

SpringBoot04 项目热部署详解的更多相关文章

  1. IDEA 服务器热部署详解(On Update action/On frame deactivation)

    https://blog.csdn.net/w15321271041/article/details/80597962 场景:一般服务器(比如tomcat,jboss等)启动以后,我们还需要进一步修改 ...

  2. Solr部署详解

    Solr部署详解 时间:2013-11-24 方式:转载 目录 1 solr概述 1.1 solr的简介 1.2 solr的特点 2 Solr安装 2.1 安装JDK 2.2 安装Tomcat 2.3 ...

  3. legend3---Windows 7/8/10 系统下Laravel框架的开发环境安装及部署详解(Vagrant + Homestead)

    legend3---Windows 7/8/10 系统下Laravel框架的开发环境安装及部署详解(Vagrant + Homestead) 一.总结 一句话总结: 1.安装的话就是下载好git,va ...

  4. centos7.2环境elasticsearch-5.0.1+kibana-5.0.1+zookeeper3.4.6+kafka_2.9.2-0.8.2.1部署详解

    centos7.2环境elasticsearch-5.0.1+kibana-5.0.1+zookeeper3.4.6+kafka_2.9.2-0.8.2.1部署详解 环境准备: 操作系统:centos ...

  5. 【转】Nginx+php-fpm+MySQL分离部署详解

    转:http://www.linuxidc.com/Linux/2015-07/120580.htm Nginx+php-fpm+MySQL分离部署详解 [日期:2015-07-26] 来源:Linu ...

  6. MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解

    MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解 Percona XtraDB Cluster简称PXC.Percona Xtradb Cluster的实现是在 ...

  7. TortoiseGit学习系列之TortoiseGit基本操作拉取项目(图文详解)

    前面博客 TortoiseGit学习系列之TortoiseGit基本操作克隆项目(图文详解) TortoiseGit学习系列之TortoiseGit基本操作修改提交项目(图文详解) TortoiseG ...

  8. TortoiseGit学习系列之TortoiseGit基本操作修改提交项目(图文详解)

    前面博客 TortoiseGit学习系列之TortoiseGit基本操作克隆项目(图文详解) TortoiseGit基本操作修改提交项目 项目克隆完成后(可以将克隆 clone 理解为 下载,检出 c ...

  9. Git学习系列之Git基本操作拉取项目(图文详解)

    前面博客 Git学习系列之Git基本操作推送项目(图文详解) 当然,如果多人协作,或者多个客户端进行修改,那么我们还要拉取(Pull ... )别人推送到在线仓库的内容下来. 大神们是不推荐使用 pu ...

随机推荐

  1. UI组件之Button

    UIButton:按钮,可以实现用户和app的交互,父类是UIControl,事件驱动型的组件的父类都是UIControl.一般使用类方法创建一个对象,创建时指定button的类型, iOS7.0后采 ...

  2. PHP-内嵌式语言(转)(未看)

    PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写.PHP 是一种内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行 ...

  3. Docker alpine 设置东八时区

    FROM alpine:3.8 RUN echo 'http://mirrors.ustc.edu.cn/alpine/v3.5/main' > /etc/apk/repositories &a ...

  4. linux通过脚本获取内存信息

    1 原理 脚本中通过执行free获取内存信息,然后将文本信息通过“空格”分隔符分割成字符串数组将不同信息提取出来,最后通过bc计算出百分比 2 脚本 #!/bin/shHOSTNAME=`hostna ...

  5. ICP 求解相机思路

    1.之前仍然是需要创建find_feature_matches,和pixel2cam,一个是用来匹配描述子的,一个是把像素坐标转成归一化平面坐标的.里面的变量都要带上&.2.因为是3d-3d. ...

  6. nginx+tomcat负载均衡搭建

    一.      单独部署tomcat和nginx Nginx版本:nginx-1.13.5 Tomcat版本:apache-tomcat-8.5.8 操作系统:win10 必须先部署一个tomcat服 ...

  7. Thriftpy一个简单的例子

    sleep.thrift文件(什么是thrift文件?),文件内容如下,该文件定义了一个Sleep服务,该服务提供一个sleep方法,sleep方法接受一个32位int类型的参数且没有返回值 serv ...

  8. java客户端文件的上传和下载

    java客户端文件的上传和下载 //上传 public JTable upload(String id){ JTable table=new JTable(); System.out.println( ...

  9. director.js实现前端路由

    注:director.js的官网 https://github.com/flatiron/director director.js是什么? 理解:前端的route框架,director.js客户端的路 ...

  10. Mybatis中collection与association的区别

    association是多对一的关系 collection是一个一对多的关系