博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot热部署 学习笔记
阅读量:5158 次
发布时间:2019-06-13

本文共 1377 字,大约阅读时间需要 4 分钟。

实现原理热部署:直接重新加载整个工程热加载:在运行时重新加载字节码文件(基于classloader)
Java热部署和热加载的联系不重启服务器编译/部署项目基于Java的类加载器实现
部署方式上的区别热部署在服务器运行时重新部署项目(不用重启服务器)—节省运维时间,提高效率。热加载在运行时重新加载class.(Java字节码文件)—当Java类做了一定的修改时, 不需要重启服务, 编译后的字节码文件就可以更新同步。
类加载的五个阶段		加载:找到java的静态存储结构并加载到虚拟机内,转换为方法区运行时使用的数据结构,生成class对象,用户可以自定义类加载器参与进来		验证:确保字节码是安全的,确保不会对虚拟机造成危害,可以通过虚拟机的启动参数来禁用一些验证(不推荐)		准备:确定内存布局,初始化类变量,是赋初始值(例如:静态变量等赋为0),不会执行方法中赋值语句		解析:将符号引用变为直接引用		初始化:调用程序自定义代码(例如:静态变量真正赋值为12) 5种初始化:
1.遇到new,get, static这几条字节码指令,如果类没有初始化,则需要触发初始化。final修饰的类会在编译时把结果放到常量池中,即使调用也不会触发初始化。final关键字它修饰的是常量。2.使用反射对类进行反射调用,如果类没有进行初始化,就需要先初始化3.当初始化一个类的时候,如果发现其父类还没有进行过初始化,需要先触发父类的初始化。先初始化父类,在初始化子类。4.虚拟机启动的时候用户需要制定一个要执行的主类,虚拟机会先初始化这个主类。5.使用jdk1.7动态机制相关的句柄会进行初始化。 java类加载器特点 1、由AppClass Loader (系统类加载器)开始加载指定的类 2、类加载器将加载任务交给其父,如果其父找不到,再由自己去加载 3、Bootstrap Loader(启动类加载器)是最顶级的类加载器(BootstrapClassLoader是C++实现的,其没有对应的Java子类,只是名义上的所有类加载器父类,因为在ClassLoader中当parent委托对象为null的话会默认BootstrapClassLoader为parent) Java类的热部署 一、类的热加载   
@Overrideprotected Class
findClass(String name) throws ClassNotFoundException{ System.out.println("加载类===" + name ); byte[] data =loadClassData(name); return this.defineClass(name,data,0,data.length);}

  

二、配置Tomcat 1、直接把项目web文件夹放再webapps里。 2、在tomcat\conf\server.xml中的
内部添加
标签。

  3、在%tomcat_home%\conf\Catalina\localhost中添加一个XML

 

 
 

转载于:https://www.cnblogs.com/lujing-newer/p/8472279.html

你可能感兴趣的文章
Java Scala获取所有注解的类信息
查看>>
delphi ,安装插件
查看>>
case when then的用法-leetcode交换工资
查看>>
11.28.cookie
查看>>
BeanShell简介
查看>>
python字符串操作
查看>>
不同程序语言的注释和变量要求
查看>>
语言基础(9):static, extern 和 inline
查看>>
邮件和短信验证码
查看>>
(转)Android studio 使用心得(五)—代码混淆和破解apk
查看>>
构建之法阅读笔记03
查看>>
ES5_03_Object扩展
查看>>
Apache-ab 接口性能测试
查看>>
EF 4.1 Code First Walkthrough
查看>>
常用MySQL语法
查看>>
bzoj 2600: [Ioi2011]ricehub
查看>>
创建数据库,表
查看>>
工厂模式
查看>>
计算机网络基础知识
查看>>
C#里如何遍历枚举所有的项
查看>>