--- id: [[P-Reinforce|P-Reinforce]]-AI-DEPENDENCY-INJECTION category: "10_Wiki/๐Ÿ’ก Topics/AI" confidence_score: 0.99 tags: [SoftwareEngineering, Patterns, DI, Decoupling] last_reinforced: 2026-04-20 --- # [[Dependency-Injection|Dependency-Injection]] (์˜์กด์„ฑ ์ฃผ์ž…) ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > "์ง์ ‘ ์‚ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ง๊ณ , ๋ฐฐ๋‹ฌ๋ฐ›์•„ ์จ๋ผ." ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•œ ์˜์กด ๊ฐ์ฒด๋ฅผ ์Šค์Šค๋กœ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ , ์™ธ๋ถ€์—์„œ ์ฃผ์ž…๋ฐ›์Œ์œผ๋กœ์จ ์ฝ”๋“œ ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) - **The Core Concept**: - ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ `new Service()`๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ˆœ๊ฐ„, ๊ทธ ํด๋ž˜์Šค๋Š” ํ•ด๋‹น ์„œ๋น„์Šค์— ๊ฐ•ํ•˜๊ฒŒ ๊ฒฐํ•ฉ(Coupled)๋œ๋‹ค. - DI๋Š” ์ƒ์„ฑ์ž(Constructor)๋‚˜ ๋ฉ”์„œ๋“œ ์ธ์ž๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€์—์„œ ๊ตฌํ˜„์ฒด๋ฅผ ์ „๋‹ฌ๋ฐ›๋Š”๋‹ค. - **Benefits**: - **TeStability**: ์‹ค์ œ DB ๋Œ€์‹  ๊ฐ€์งœ(Mock) ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…ํ•˜์—ฌ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ. - **Flexibility**: ์ฝ”๋“œ ์ˆ˜์ • ์—†์ด ์‹คํ–‰ ์‹œ์ ์— ๊ตฌํ˜„์ฒด ๊ต์ฒด ๊ฐ€๋Šฅ. - **Maintenance**: ์˜์กด์„ฑ ๊ด€๋ฆฌ๊ฐ€ ํ•œ๊ณณ(Container)์œผ๋กœ ์ง‘์ค‘๋˜์–ด ๊ตฌ์กฐ ํŒŒ์•…์ด ์šฉ์ด. - **Types**: Constructor Injection, Setter Injection, Interface Injection. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (RL Update) - DI ํ”„๋ ˆ์ž„์›Œํฌ(Spring, NestJS ๋“ฑ)๋ฅผ ๊ณผ๋„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ์˜์กด์„ฑ ๊ทธ๋ž˜ํ”„๊ฐ€ ๋„ˆ๋ฌด ๋ณต์žกํ•ด์ ธ ๋Ÿฐํƒ€์ž„ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ฃผ๊ฑฐ๋‚˜ ๋””๋ฒ„๊น…์ด ์–ด๋ ค์›Œ์ง€๋Š” 'DI ์ง€์˜ฅ'์— ๋น ์งˆ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๊ฐ€ ๋ช…ํ™•ํ•  ๋•Œ๋Š” ๊ณผ๋„ํ•œ ์ถ”์ƒํ™”๋ณด๋‹ค ์ง๊ด€์ ์ธ ๊ตฌ์„ฑ์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - Related: [[แ„‹แ…ดแ„Œแ…ฉแ†ซแ„‰แ…ฅแ†ผ แ„‹แ…งแ†จแ„Œแ…ฅแ†ซ (Dependency Inversion)|Dependency-[[Inversion]]-Principle]] , Inversion-of-Control (IoC) - Pattern: Factory-Method-Pattern