目录

spring-boot

spring-boot 是一套资源组织的标准。会把所有资源(jar包,资源文件)打包成一个fat jar。在启动fat jar的时候入口类是JarLauncher,这个类的主要功能是

  1. 将fat jar中的资源设置到classpath中,保证在java运行时能访问
  2. 反射调用应用的main函数

pardora-boot

pardora-boot在spring-boot上包了一层。他入口是 SarLauncher,功能跟JarLuncher是一样的,他还额外支持Sar包格式(taobao-hsf.sar)

不同点

由于pardora-boot有中间件的类隔离机制,所以在初始化运行环境后,还生成了一个BizClassLoader,这个classloader中包含了中间件对外暴露的类。保证应用中访问中间件的类时会从BizClassLoader中取

  1. pandora-boot先初始化java运行时环境
  2. pandora 给每个插件创建了一个classLoader 加载了插件需要的所有类。并把每个插件中需要暴露的类拿出来,缓存到 bizClassLoader中。业务代码需要访问中间件的类时,先从缓存中取潘多拉加载的中间件类。
  3. new 一个新的线程,并用bizClassLoader去加应用的main函数所在类(这个时候应用中所有类的加载默认都是bizClassLoader)
  4. 在新线程中初始化spring-boot