--- id: P-REINFORCE-AUTO-A38513 category: "10_Wiki/๐Ÿ’ก Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - ์˜์กด์„ฑ ์ฃผ์ž… (Dependency Injection)" --- # [[แ„‹แ…ดแ„Œแ…ฉแ†ซแ„‰แ…ฅแ†ผ แ„Œแ…ฎแ„‹แ…ตแ†ธ (Dependency Injection)|์˜์กด์„ฑ ์ฃผ์ž… (Dependency Injection)]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection, DI)์€ ๋ชจ๋“ˆ์ด ํ•„์š”๋กœ ํ•˜๋Š” ์˜์กด์„ฑ ๊ฐ์ฒด๋ฅผ ๋‚ด๋ถ€์—์„œ ์ง์ ‘ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ์ œ๊ณต(์ฃผ์ž…)๋ฐ›๋„๋ก ์„ค๊ณ„ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํŒจํ„ด์ž…๋‹ˆ๋‹ค [1, 2]. ์ด ๊ธฐ๋ฒ•์€ ์‹œ์Šคํ…œ ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”์–ด ์ฝ”๋“œ์˜ ๋ชจ๋“ˆํ™”๋ฅผ ์ด‰์ง„ํ•˜๋ฉฐ [2, 3], ๊ถ๊ทน์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ๋ชฉ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค [3, 4]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) - **๊ฒฐํ•ฉ๋„ ๊ฐ์†Œ ๋ฐ ๋ชจ๋“ˆํ™” ์ด‰์ง„** ์˜์กด์„ฑ ์ฃผ์ž…์€ ๋ชจ๋“ˆ ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ ์‹œ ํ•œ ๋ชจ๋“ˆ์ด ๋‹ค๋ฅธ ๋ชจ๋“ˆ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์™ธ๋ถ€์—์„œ ์ œ๊ณต๋ฐ›๋Š” ๋ฐฉ์‹์„ ์ทจํ•ฉ๋‹ˆ๋‹ค [1, 2]. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์€ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋””์ปคํ”Œ๋ง(decoupling)ํ•˜์—ฌ ํ•ต์‹ฌ ๋กœ์ง์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ ๊ตฌํ˜„์ฒด๋ฅผ ๊ต์ฒดํ•˜๊ฑฐ๋‚˜ ์˜์กด์„ฑ์„ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค [3]. - **์˜์กด์„ฑ ์—ญ์ „ ์›์น™(DIP) ๊ตฌํ˜„์˜ ํ•ต์‹ฌ** ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ ์„ค๊ณ„ ์›์น™ ์ค‘ ํ•˜๋‚˜์ธ '์˜์กด์„ฑ ์—ญ์ „ ์›์น™(Dependency Inversion Principle)'์€ ์ƒ์œ„ ๋ชจ๋“ˆ์ด ํ•˜์œ„ ๋ชจ๋“ˆ์— ์ง์ ‘ ์˜์กดํ•˜์ง€ ์•Š๊ณ  ๋‘˜ ๋‹ค ์ถ”์ƒํ™”์— ์˜์กดํ•ด์•ผ ํ•จ์„ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค [5]. ์˜์กด์„ฑ ์ฃผ์ž…์€ ์ด ์›์น™์„ ์‹ค์ œ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ์ฃผ๋œ ์ˆ˜๋‹จ์œผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, Java์˜ Spring์ด๋‚˜ ASP.NET Core์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์€ ๋‚ด์žฅ๋œ DI ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ†ตํ•ด ์˜์กด์„ฑ ์ฃผ์ž…์„ ํ›จ์”ฌ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค [6]. - **์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์—์„œ์˜ ํ™œ์šฉ** - **๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜(Layered Architecture):** ์ƒ์œ„ ๊ณ„์ธต์ด ํ•˜์œ„ ๊ณ„์ธต์„ ์ง์ ‘ ์ธ์Šคํ„ด์Šคํ™”ํ•˜๋Š” ๋Œ€์‹  ์™ธ๋ถ€์—์„œ ์˜์กด์„ฑ์„ ์ฃผ์ž…๋ฐ›๊ฒŒ ํ•˜์—ฌ, ๊ณ„์ธต ๊ฐ„์˜ ๋А์Šจํ•œ ๊ฒฐํ•ฉ(loose coupling)์„ ์ด๋Œ์–ด๋ƒ…๋‹ˆ๋‹ค [1]. - **ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜(Clean Architecture):** ๋‚ด๋ถ€ ๊ณ„์ธต์— ์ •์˜๋œ ์ธํ„ฐํŽ˜์ด์Šค(ํฌํŠธ)์— ๋Œ€ํ•ด ์™ธ๋ถ€ ๊ณ„์ธต์ด ๊ตฌ์ฒด์ ์ธ ๊ตฌํ˜„(์–ด๋Œ‘ํ„ฐ)์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ๋Ÿฐํƒ€์ž„์— ์˜์กด์„ฑ ์ฃผ์ž…์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์—ฐ๊ฒฐํ•จ์œผ๋กœ์จ, ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ํŠน์ • ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๋„๊ตฌ์— ๊ฒฐํ•ฉ๋˜์ง€ ์•Š๋„๋ก ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค [7]. ๋˜ํ•œ ์˜์กด์„ฑ ์ฃผ์ž…๊ธฐ๋ฅผ ํ™œ์šฉํ•ด ๋ชจ๋“  ์˜์กด์„ฑ์ด ๋‚ด๋ถ€๋ฅผ ํ–ฅํ•˜๋„๋ก ์˜์กด์„ฑ ๊ทœ์น™์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [8]. - **ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ(Testability) ํ™•๋ณด** ํ•˜๋“œ ์ฝ”๋”ฉ๋œ ์˜์กด์„ฑ์€ ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ๊ณผ ๊ฐ•ํ•˜๊ฒŒ ๊ฒฐํ•ฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์™ธ๋ถ€ ํ™˜๊ฒฝ์œผ๋กœ๋ถ€ํ„ฐ ๊ณ ๋ฆฝ์‹œ์ผœ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์–ด๋ ต๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค [4, 9]. ๋”ฐ๋ผ์„œ ์™ธ๋ถ€ ์‹œ์Šคํ…œ ์—†์ด ๋ชจ๋“ˆ์„ ๋…๋ฆฝ์ ์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๊ณ , ํ•„์š”์— ๋”ฐ๋ผ ๋ชฉ(Mock)๊ณผ ๊ฐ™์€ ํ…Œ์ŠคํŠธ ๋”๋ธ”(Test Double)๋กœ ์˜์กด์„ฑ์„ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์˜์กด์„ฑ ์ฃผ์ž…์˜ ์‚ฌ์šฉ์ด ํ•„์ˆ˜์ ์œผ๋กœ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค [4, 10]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[แ„‹แ…ดแ„Œแ…ฉแ†ซแ„‰แ…ฅแ†ผ แ„‹แ…งแ†จแ„Œแ…ฅแ†ซ แ„‹แ…ฏแ†ซแ„Žแ…ตแ†จ (Dependency Inversion Principle)|์˜์กด์„ฑ ์—ญ์ „ ์›์น™ (Dependency Inversion Principle)]], [[แ„‚แ…ณแ„‰แ…ณแ†ซแ„’แ…กแ†ซ แ„€แ…งแ†ฏแ„’แ…กแ†ธ (Loose Coupling)|๋А์Šจํ•œ ๊ฒฐํ•ฉ (Loose Coupling)]], [[แ„€แ…ชแ†ซแ„‰แ…ตแ†ทแ„‰แ…กแ„‹แ…ด แ„‡แ…ฎแ†ซแ„…แ…ต (Separation of Concerns)|๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ (Separation of Concerns)]], [[แ„แ…ฆแ„‰แ…ณแ„แ…ณ แ„‹แ…ญแ†ผแ„‹แ…ตแ„‰แ…ฅแ†ผ (Testability)|ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ (Testability)]] - **Projects/Contexts:** [[แ„แ…ณแ†ฏแ„…แ…ตแ†ซ แ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅ (Clean Architecture)|ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ (Clean Architecture)]], [[แ„€แ…จแ„Žแ…ณแ†ผแ„’แ…งแ†ผ แ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅ (Layered Architecture)|๊ณ„์ธตํ˜• ์•„ํ‚คํ…์ฒ˜ (Layered Architecture)]], [[Spring Framework|Spring Framework]], [[ASP.NET Core|ASP.NET Core]] - **Contradictions/Notes:** ์ œ๊ณต๋œ ๋ชจ๋“  ์†Œ์Šค๋Š” ์˜์กด์„ฑ ์ฃผ์ž…์ด ๋ชจ๋“ˆ ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•œ๋‹ค๋Š” ์ ์—์„œ ์ผ์น˜๋œ ๊ฒฌํ•ด๋ฅผ ๋ณด์ด๊ณ  ์žˆ์œผ๋ฉฐ, ์ฝ”๋“œ์˜ ์„ค๊ณ„ ๋‹จ๊ณ„๋ถ€ํ„ฐ ํ•˜๋“œ ์ฝ”๋”ฉ์„ ์ง€์–‘ํ•˜๊ณ  ์˜์กด์„ฑ ์ฃผ์ž…์„ ์—ผ๋‘์— ๋‘˜ ๊ฒƒ์„ ๊ณตํ†ต์ ์œผ๋กœ ๊ฐ•์กฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค [2, 9]. --- *Last updated: 2026-04-18* - Raw Source: 00_Raw/2026-04-20/์˜์กด์„ฑ ์ฃผ์ž… (Dependency Injection).md ---