Slide 1

Slide 1 text

DI コンテナを作って DI コンテナを知る ryounasso

Slide 2

Slide 2 text

簡易版 DI を作ってみた結果の学びをお話しします 詳しいコードの説明等は省いています🙇

Slide 3

Slide 3 text

普段から DI 使ってるけど... Spring Boot で DI 使ってるけど、内側がどうなっているのか理解できておらず... 自作して理解してみよう!

Slide 4

Slide 4 text

DI とは DI (Dependency Injection, 依存性の注入) B C A B は C に依存している A は B に依存している A の依存対象 この依存関係を外部から確立する

Slide 5

Slide 5 text

DI とは B C A 全体を把握するのは難しい... D E F

Slide 6

Slide 6 text

DI とは B C A 組み立てをやってくれる D E F DI コンテナ クライアント A を使いたい A

Slide 7

Slide 7 text

そもそもなぜ DI ? Controellr Service Repository xxServiceImpl xxController xxRepository xxService implements ビジネスロジックがデータアクセス層に依存

Slide 8

Slide 8 text

そもそもなぜ DI ? Controlelr Service Repository xxServiceImpl xxController xxRepository xxService implements DI Container Container

Slide 9

Slide 9 text

大事なのがリフレクションとアノテーション リフレクション クラスなどのメタ情報を扱うことができる Java 標準 API 定義情報などを知ることができるようになる アノテーション ソースコードに注釈をつけるもの @Overried, @Inject

Slide 10

Slide 10 text

リフレクション リフレクションを使って、クラスのメタ情報を扱うことで どんなクラスが来ても対応できるようにする フレームワーク側からすると、どんなクラスが来るかわからない

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

アノテーション インジェクトしたいフィールドにアノテーションをつけることで コンテナが認識して、インジェクションを行ってくれる DIContainer.register("bar", Bar.class) 的なことを毎回するのは手間

Slide 13

Slide 13 text

アノテーション

Slide 14

Slide 14 text

まとめ DI コンテナの中のざっくりとした処理が理解できた リフレクション・アノテーションの重要性 改めて DI とは何かも復習することができた

Slide 15

Slide 15 text

参考資料 - 作って理解するDIコンテナ https://nowokay.hatenablog.com/entry/20160406/1459918560 - 【やさしくない!? Java】 リフレクションの話 https://www.youtube.com/watch?v=LR0nSDRR0Ac&list=PL0BiA lg8j4Zu7Uu6Zdrm2dl8g8kU15Qie&index=2