Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
簡易 DI コンテナを作って DI コンテナを知る
Search
ryounasso
December 13, 2023
Programming
1.5k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
簡易 DI コンテナを作って DI コンテナを知る
簡易 DI コンテナを作ることで、DI コンテナの仕組みについて調べてみました。
ryounasso
December 13, 2023
More Decks by ryounasso
See All by ryounasso
明日から始めるリファクタリング
ryounasso
0
320
駆け足で Google から学ぶテスト設計の指針
ryounasso
0
280
React inside basics: learn from “build own react"
ryounasso
0
270
抽象データ型について学んだ
ryounasso
0
510
開発効率向上のためのリファクタリングの一歩目の選択肢 ~コード分割~ / JJUG CCC 2024 Fall
ryounasso
0
4.4k
Clean Architecture by TypeScript & NestJS
ryounasso
0
1.2k
Fast API を用いた Web API の開発
ryounasso
1
660
テストゼロの個人開発プロジェクトにテストを導入した話
ryounasso
0
540
TypeScript_コンパイラの内側に片足を入れる
ryounasso
3
1.1k
Other Decks in Programming
See All in Programming
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
300
TanStack Vue Query と Pinia Colada から学ぶ非同期状態の型設計
aoshi
0
640
baseline으로 마이그레이션, 리팩토링 안전하게 맡기기
fornewid
1
960
クラウドゲーミングのパフォーマンス最適化に挑む / Cloud Gaming Performance Tuning
vivion
0
330
自作Discord音声botをLambda MicroVMsに移行した話 / Migrating My Discord Voice Bot to Lambda MicroVMs
akihisaikeda
1
300
Spec-Driven Development - Why Vaadin Is the Perfect Fit
simas
PRO
0
240
Secure Your Coding Agent Like It’s Malware (v1.5) 🇬🇧 @Code.talks 2026
richargh
0
110
DroidKnights 2026 Android A2UI Jetpack Compose 기반의 안전한 AI UI 렌더링 - 박제창
itsmedreamwalker
1
210
AmebaブログはKMPから卒業します
kmars0605
0
340
プロジェクトコードをキレイキレイしよう!暗黙的な参照を読み解く静的解析
ostk0069
0
210
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
3
1.5k
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
6
2.2k
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
The Curse of the Amulet
leimatthew05
3
17k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
610
Making Projects Easy
brettharned
120
6.9k
The Cost Of JavaScript in 2023
addyosmani
56
10k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
380
WENDY [Excerpt]
tessaabrams
14
40k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
320
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Transcript
DI コンテナを作って DI コンテナを知る ryounasso
簡易版 DI を作ってみた結果の学びをお話しします 詳しいコードの説明等は省いています🙇
普段から DI 使ってるけど... Spring Boot で DI 使ってるけど、内側がどうなっているのか理解できておらず... 自作して理解してみよう!
DI とは DI (Dependency Injection, 依存性の注入) B C A B
は C に依存している A は B に依存している A の依存対象 この依存関係を外部から確立する
DI とは B C A 全体を把握するのは難しい... D E F
DI とは B C A 組み立てをやってくれる D E F DI
コンテナ クライアント A を使いたい A
そもそもなぜ DI ? Controellr Service Repository xxServiceImpl xxController xxRepository xxService
implements ビジネスロジックがデータアクセス層に依存
そもそもなぜ DI ? Controlelr Service Repository xxServiceImpl xxController xxRepository xxService
implements DI Container Container
大事なのがリフレクションとアノテーション リフレクション クラスなどのメタ情報を扱うことができる Java 標準 API 定義情報などを知ることができるようになる アノテーション ソースコードに注釈をつけるもの @Overried,
@Inject
リフレクション リフレクションを使って、クラスのメタ情報を扱うことで どんなクラスが来ても対応できるようにする フレームワーク側からすると、どんなクラスが来るかわからない
None
アノテーション インジェクトしたいフィールドにアノテーションをつけることで コンテナが認識して、インジェクションを行ってくれる DIContainer.register("bar", Bar.class) 的なことを毎回するのは手間
アノテーション
まとめ DI コンテナの中のざっくりとした処理が理解できた リフレクション・アノテーションの重要性 改めて DI とは何かも復習することができた
参考資料 - 作って理解するDIコンテナ https://nowokay.hatenablog.com/entry/20160406/1459918560 - 【やさしくない!? Java】 リフレクションの話 https://www.youtube.com/watch?v=LR0nSDRR0Ac&list=PL0BiA lg8j4Zu7Uu6Zdrm2dl8g8kU15Qie&index=2