十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
前言
對spring boot本身啟動原理的分析,請參考:https://www.jb51.net/article/141478.htm
Spring boot里的ClassLoader繼承關(guān)系
可以運行下面提供的demo,分別在不同的場景下運行,可以知道不同場景下的Spring boot應(yīng)用的ClassLoader繼承關(guān)系。
https://github.com/hengyunabc/spring-boot-inside/tree/master/demo-classloader-context
分三種情況:
在IDE里,直接run main函數(shù)
則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