spring boot入门之——热部署
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot入门之——热部署相关的知识,希望对你有一定的参考价值。
场景:
本地调试(频繁的启动/停止服务器)
线上发布(每次都需要启动/停止服务器)
优点:
无论本地还是线上,都适用
无需重启服务器,提高开发、调试效率;提升发布、运维效率,降低运维成本
java实现热部署有哪几种方式?
通过配置tomcat,直接把项目放在webapps里。
在tomcatconfserver.xml中的<host></host>中添加<context debug="0" docBase="" path="" privileged="true" reloadable="true"/>标签
在tomcatconfCatalinalocalhost中添加xml,关键属性<context docBase="" reloadable="true" />
实现一个Java类热加载的实例
//自定义类加载器,需实现findClass方法(核心类) public class MyClassLoader extends ClassLoader { //定义加载的路径 private String classPath; public MyClassLoader(String classPath) { //调用父类的加载器 super(ClassLoader.getSystemClassLoader()); this.classPath = classPath; } //1.重新findClass方法 @Override protected Class<?> findClass(String name) throws ClassNotFoundException { byte[] b = this.loadData(name); return this.defineClass(name, b, 0, b.length); } //加载class文件中的内容 private byte[] loadData(String name) { //.替换为//表示 name = name.replaceAll(".", "//"); try { FileInputStream is = new FileInputStream(new File(classPath + name + ".class")); ByteArrayOutputStream aos = new ByteArrayOutputStream(); int b = 0; while((b = is.read())!=-1){ aos.write(b); } is.close(); aos.close(); return aos.toByteArray(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } }
以上是关于spring boot入门之——热部署的主要内容,如果未能解决你的问题,请参考以下文章