浩晨众云网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
前言
对spring boot本身启动原理的分析,请参考:https://www.jb51.net/article/141478.htm
Spring boot里的ClassLoader继承关系
可以运行下面提供的demo,分别在不同的场景下运行,可以知道不同场景下的Spring boot应用的ClassLoader继承关系。
https://github.com/hengyunabc/spring-boot-inside/tree/master/demo-classloader-context
分三种情况:
在IDE里,直接run main函数
则Spring的ClassLoader直接是SystemClassLoader。ClassLoader的urls包含全部的jar和自己的target/classes
========= Spring Boot Application ClassLoader Urls =============
ClassLoader urls: sun.misc.Launcher$AppClassLoader@2a139a55
file:/Users/hengyunabc/code/java/spring-boot-inside/demo-classloader-context/target/classes/
file:/Users/hengyunabc/.m2/repository/org/springframework/cloud/spring-cloud-starter/1.1.9.RELEASE/spring-cloud-starter-1.1.9.RELEASE.jar
file:/Users/hengyunabc/.m2/repository/org/springframework/boot/spring-boot-starter/1.4.7.RELEASE/spring-boot-starter-1.4.7.RELEASE.jar
...
以fat jar运行
mvn clean package java -jar target/demo-classloader-context-0.0.1-SNAPSHOT.jar