jsug spring bootコードリーディング 接触篇 a contact
TRANSCRIPT
Spring Bootコードリーディング発動篇 A CONTACT
Who am I ?
What is Sailing?
本日の内容
なぜコードリーディング?
一つ注意
今からSpring Bootのプロジェクト用意して IDEで見ようとするのはやめた方がいい
※大量のDependenciesのダウンロードが始まり、 ビルド完了までけっこうな時間がかかります。
必ず書くこれ
今回はここを見ましょう!
超ざっくりこんな流れSpringApplicationの初期化
クラスローダーからApplicationContextInitializerを取得する
SpringApplicationのrun
クラスローダーからApplicationListenerを取得する
SpringAppliationRunListenersをstart
ApplicationContextに初期化してたものを色々ロードする
ApplicationContextをリフレッシュ(ServletContextを開始)
SpringApplicationspring-boot/spring-boot/ src/main/java/org/springframework/boot/ SpringApplication.java
コンストラクタ
初期化で色々読み出して 保持してる
SpringAppliction#initialize クラスローダーから色々読み取る
ここら辺は Spirng Framework
deduceWebEnvironment
ApplicationContextInitializer
ApplicationContextInitializer
spring-boot/src/main/resouces/META-INF/spring.factories
こんな感じで色々書いてる。 ActuatorとかAutoconfigureとかにも定
義されてます。
SpringApplication#run
ここの中で Configuration, Beanを探して
初期化してる
createAndRefreshContext
自分でApplicationContext指定しなければ、AnnotationConfigApplicationContextかConfigurableWebApplicationContextを
作って返す
ここでApplicationが開始されます。 以降は後処理的なもの。
refresh
AbstractApplicationContext#refresh
AnnotationConfigEmbeddedWebApplicationContextにrefreshの実装はないのでこの先はSpring Framework。
まとめ
ありがとうございました!