Dependency Injection
์๋ฏธ์ ์ญํ
๊ฐ์ฒด ๊ฐ์ ์์กด์ฑ์ ํด๊ฒฐํ๋ ๋์์ธ ํจํด
๊ฐ์ฒด ๊ฐ์ ์์กด์ฑ์ ๊ด๋ฆฌํ ๋ ๋ฐ์ํ ์ ์๋ ๋ณต์ก์ฑ๊ณผ ์ค๋ณต ์ฝ๋๋ฅผ ์ค์ฌ์ ์ ์ง๋ณด์์ฑ์ ๋์ผ ์ ์์
์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํค๋ฉฐ ๊ฐ์ฒด ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ ์ ์์
์ธํฐํ์ด์ค๋ก ๊ตฌํ๋์ด ์์ด์ ์์กด์ฑ ์ฃผ์ ์ ์ฝ๊ฒํ ์ ์์
์๋น์ค(
builder.service
)๋ก ์์กด์ฑ ์ฃผ์ ์ ๊ตฌํํ๋๋ฐ, ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด๋ฅผ ๋งคํํ์ฌ ํ์ํ ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋(bulder.build()
) ์ด๋ฅผ ์์ฑํ์ฌ ๋ฐํํด์ค์ฌ์ฉ์ ๋๋ ํ๋ ์ ์ํฌ๊ฐ ์ ๊ณตํ๋ ์๋น์ค๋ฅผ ์ถ๊ฐํ ์ ์์
ASP.NET Core ํ๋ ์ ์ํฌ์ ํฌํจ๋ DI๋
builder.Add{GROUP_NAME}
์ผ๋ก ์ถ๊ฐํจ
์๋น์ค (Service)
์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํด๋์ค๋ ์ปดํฌ๋ํธ๋ฅผ ์๋ฏธ
Service๋ ์ธํฐํ์ด์ค์ ํด๋น ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ํด๋์ค์ ๋ ๊ฐ์ง ํํ๋ก ์ฌ์ฉ๋จ
์ฌ์ฉ ๊ณผ์
์๋น์ค ์ปจํ ์ด๋(์ธํฐํ์ด์ค, ๊ตฌํ์ฒด) ๊ตฌํ (ASP.NET Core์์ ์ ๊ณตํ๋ ๊ฒ๋ ์์)
์๋น์ค ์ปจํ ์ด๋๋ก ๊ฐ์ฒด์ ์ธ์คํด์ค ์์ฑ
์๋น์ค ์ปจํ ์ด๋์ ๋ฑ๋ก (builder.Service.Add{...})
builder์ ์ด ์๋น์ค ์ปจํ ์ด๋ ์์กด์ฑ ์ฃผ์ (DI)
ASP.NET Core ์์ : DbContext, Logger, ...
์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ์์กด์ฑ ์ฃผ์ ํจ
๊ฐ์ฒด์ ์์ฑ๊ณผ ์๋ฉธ์ ํ๋ ์์ํฌ๊ฐ ์์์ ํ ์ ์๊ฒ ํด์ค
์ฌ์ฉ ๋ฐฉ๋ฒ
3๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์์กด์ฑ ์ฃผ์ ์ด ๊ฐ๋ฅํ๊ณ , ์ฃผ์ ๋ ๋ฐฉ์์ ๋ฐ๋ผ ์๋ช ์ฃผ๊ธฐ๊ฐ ๋ฌ๋ผ์ง. (์์ธํ ์ค๋ช ์ MS Docs ์ฐธ๊ณ )
์ง์ ๋ ํ์์ ๋ฒ์ ์๋น์ค ์ง์
ํ ๋ฒ์ ์์ฒญ ๋ด์์๋ ๊ฐ์ ์ธ์คํด์ค๋ฅผ ๋ฐํํจ. ํ๋ฒ์ ์์ฒญ์์ ์๋น์ค๊ฐ ์ฌ๋ฌ๋ฒ ํธ์ถ๋๋ ๊ฒฝ์ฐ ๋์ผํ ๊ฐ์ฒด ์ธ์คํด์ค๊ฐ ๋ฐํ๋จ
์ฑ๊ธํค ์๋น์ค ์ง์
ํ๋ก๊ทธ๋จ ์ ๋ฐ์ ๊ฑธ์ณ ํ๋์ ์ธ์คํด์ค๋ง ๋ฐํ
๋ชจ๋ ์์ฒญ๋ค์ด ํ๋์ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํด๋ ๊ด์ฐฎ์ ์ํฉ์์ ์ฌ์ฉํจ
์์์๋น์ค ์ง์
๋งค ์์ฒญ, ๋งค ์๋น์ค ํธ์ถ ๋๋ง๋ค ํ๋์ ์ธ์คํด์ค๊ฐ ๋ฐํ ๋จ
Add{GROUP_NAME}์ ์ฌ์ฉํ์ฌ ๊ด๋ จ ์๋น์ค ๊ทธ๋ฃน์ ๋ฑ๋กํ ์ ์์.
AddControllers ๋ MVC ์ปจํธ๋กค๋ฌ์ ํ์ํ ์๋น์ค๋ฅผ ๋ฑ๋กํจ
๊ฒ์ ์๋ฒ๋ ๋ฉํฐ์ฐ๋ ๋๋ก ๋์๊ฐ๊ธฐ ๋๋ฌธ์, ์๋น์ค ์ธ์คํด์ค๊ฐ ๊ณต์ ์์ญ์ด ๋ ์ ์์. ๊ณต์ ์์ญ์ด ๋๋ฉด race condition, dead lock ๋ฑ์ ์ด์ ๋ฐ์ ๊ฐ๋ฅ. ๊ณต์ ์์ญ์ ์ ๋ง๋๋๊ฒ ๊ฐ์ฅ ์ข๊ธฐ ๋๋ฌธ์, AddTransient์ผ๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์
์ฝ๋ ๋ถ์
MVC ๋ชจ๋ธ์ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ํ๋ ์์ํฌ ์์
์ฐธ๊ณ ๋ฌธํ
Last updated