jsug spring bootコードリーディング 接触篇 a contact

21
Spring Bootコードリーディング 発動篇 A CONTACT

Upload: tsukasa-tamaru

Post on 21-Feb-2017

2.066 views

Category:

Engineering


4 download

TRANSCRIPT

Page 1: Jsug spring bootコードリーディング 接触篇 a contact

Spring Bootコードリーディング発動篇 A CONTACT

Page 2: Jsug spring bootコードリーディング 接触篇 a contact

Who am I ?

Page 3: Jsug spring bootコードリーディング 接触篇 a contact

What is Sailing?

Page 4: Jsug spring bootコードリーディング 接触篇 a contact

本日の内容

Page 5: Jsug spring bootコードリーディング 接触篇 a contact

なぜコードリーディング?

Page 6: Jsug spring bootコードリーディング 接触篇 a contact

一つ注意

Page 7: Jsug spring bootコードリーディング 接触篇 a contact

今からSpring Bootのプロジェクト用意して IDEで見ようとするのはやめた方がいい

※大量のDependenciesのダウンロードが始まり、 ビルド完了までけっこうな時間がかかります。

Page 8: Jsug spring bootコードリーディング 接触篇 a contact

必ず書くこれ

今回はここを見ましょう!

Page 9: Jsug spring bootコードリーディング 接触篇 a contact

超ざっくりこんな流れSpringApplicationの初期化

クラスローダーからApplicationContextInitializerを取得する

SpringApplicationのrun

クラスローダーからApplicationListenerを取得する

SpringAppliationRunListenersをstart

ApplicationContextに初期化してたものを色々ロードする

ApplicationContextをリフレッシュ(ServletContextを開始)

Page 10: Jsug spring bootコードリーディング 接触篇 a contact

SpringApplicationspring-boot/spring-boot/ src/main/java/org/springframework/boot/ SpringApplication.java

Page 11: Jsug spring bootコードリーディング 接触篇 a contact

コンストラクタ

初期化で色々読み出して 保持してる

Page 12: Jsug spring bootコードリーディング 接触篇 a contact

SpringAppliction#initialize クラスローダーから色々読み取る

ここら辺は Spirng Framework

Page 13: Jsug spring bootコードリーディング 接触篇 a contact

deduceWebEnvironment

Page 14: Jsug spring bootコードリーディング 接触篇 a contact

ApplicationContextInitializer

Page 15: Jsug spring bootコードリーディング 接触篇 a contact

ApplicationContextInitializer

Page 16: Jsug spring bootコードリーディング 接触篇 a contact

spring-boot/src/main/resouces/META-INF/spring.factories

こんな感じで色々書いてる。 ActuatorとかAutoconfigureとかにも定

義されてます。

Page 17: Jsug spring bootコードリーディング 接触篇 a contact

SpringApplication#run

ここの中で Configuration, Beanを探して

初期化してる

Page 18: Jsug spring bootコードリーディング 接触篇 a contact

createAndRefreshContext

自分でApplicationContext指定しなければ、AnnotationConfigApplicationContextかConfigurableWebApplicationContextを

作って返す

ここでApplicationが開始されます。 以降は後処理的なもの。

Page 19: Jsug spring bootコードリーディング 接触篇 a contact

refresh

AbstractApplicationContext#refresh

AnnotationConfigEmbeddedWebApplicationContextにrefreshの実装はないのでこの先はSpring Framework。

Page 20: Jsug spring bootコードリーディング 接触篇 a contact

まとめ

Page 21: Jsug spring bootコードリーディング 接触篇 a contact

ありがとうございました!