spring-boot
spring-boot 是一套资源组织的标准。会把所有资源(jar包,资源文件)打包成一个fat jar。在启动fat jar的时候入口类是JarLauncher,这个类的主要功能是
将fat jar中的资源设置到classpath中,保证在java运行时能访问
反射调用应用的main函数
pardora-boot
pardora-boot在spring-boot上包了一层。他入口是 SarLauncher,功能跟JarLuncher是一样的,他还额外支持Sar包格式(taobao-hsf.sar)
不同点
由于pardora-boot有中间件的类隔离机制,所以在初始化运行环境后,还生成了一个BizClassLoader,这个classloader中包含了中间件对外暴露的类。保证应用中访问中间件的类时会从BizClassLoader中取
pandora-boot先初始化java运行时环境
pandora 给每个插件创建了一个classLoader 加载了插件需要的所有类。并把每个插件中需要暴露的类拿出来,缓存到 bizClassLoader中。业务代码需要访问中间件的类时,先从缓存中取潘多拉加载的中间件类。
new 一个新的线程,并用bizClassLoader去加应用的main函数所在类(这个时候应用中所有类的加载默认都是bizClassLoader)
在新线程中初始化spring-boot