]springboot啟動過程分析,首先開啟springboot的啟用入口main類:
1.deducewebenvironment方法是用來判斷當前應用的環境,該方法通過獲取這兩個類來判斷當前環境是否是web環境,如果能獲得這兩個類說明是web環境,否則不是。
private collection<? extends t> getspringfactoriesinstances(class type, class<?> parametertypes, object… args)
public static list loadfactorynames(class<?> factoryclass, classloader classloader)
return result;
} catch (ioexception var8)
}當前的初始化器有如下幾個:
try
return context;
} catch (throwable var9)
}
1.獲取啟動事件***,可以看看該方法:
2.啟動事件***
void environmentprepared(configurableenvironment var1);
配置並準備環境
判斷環境,如果是web程式,建立standardservletenvironment;否則,建立standardenvironment。
private configurableenvironment getorcreateenvironment() else
}建立spring容器上下文
配置spring容器上下文
// 把應用程式引數持有類註冊到spring容器中,並且是乙個單例
if (printedbanner != null)
// 載入sources,sources是main方法所在的類
setsources = getsources();
assert.notempty(sources, "sources must not be empty");
// 將sources載入到應用上下文中。最終呼叫的是annotatedbeandefinitionreader.registerbean方法
load(context, sources.toarray(new object[sources.size()]));
// 執行eventpublishingrunlistener.contextloaded方法
listeners.contextloaded(context);
初始化器開始工作
spring容器建立完成之後會呼叫afterrefresh方法
Spring Boot 學習筆記 啟動過程方法
本文目錄 1 servlet 啟動過程方法 2 bean 初始化過程方法 3 spring boot 啟動過程事件 4 spring boot 啟動完成方法 5 整體執行順序 示例 author cuixianlong component public class demobean implemen...
SpringBoot 應用程式啟動過程探秘
說到接觸 springboot 伊始,給我第一映像最深的是有兩個關鍵元素 對照上面的典型 這個兩個元素分別是 注 本文首發於my personal blog,歡迎光臨小站 我們來舉乙個栗子,把我們天天司空見慣的 springboot 應用的啟動類來拆解一下寫出來 public static void...
SpringBoot 應用程式啟動過程探秘
說到接觸 springboot 伊始,給我第一映像最深的是有兩個關鍵元素 對照上面的典型 這個兩個元素分別是 注 本文首發於my personal blog,歡迎光臨小站 我們來舉乙個栗子,把我們天天司空見慣的 springboot 應用的啟動類來拆解一下寫出來 public static void...