
Dependency(๋๋ ์์กด์ฑ)์ ์ฝ๋์์ ๋ ๋ชจ๋๊ฐ์ ์ฐ๊ฒฐ์ด๋ค.
๊ฐ์ฒด์งํฅ์ธ์ด์์๋ ๋ ํด๋์ค๊ฐ์ ๊ด๊ณ๋ผ๊ณ ๋งํ๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ ์ค ํ๋๊ฐ ๋ค๋ฅธ ํ๋๋ฅผ ์ด๋ ํ ์ฉ๋๋ฅผ ์ํด ์ฌ์ฉํ๋ค.
๋ ๋ชจ๋์ด ์ฐ๊ฒฐ๋์ด ์์ด ํ๋์ ๋ชจ๋์ด ๋ฐ๋๋ฉด ์์กดํ ๋ค๋ฅธ ๋ชจ๋๊น์ง ๋ณ๊ฒฝ์ด ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์ ์์กด์ฑ(Dependency)๋ ์ํํ๋ค.
๐ค ๋ํ, ํ ๋ชจ๋์์ ๋ค๋ฅธ ๋ชจ๋์ ์ฌ์ฉํ๋ค๊ณ ํ์ ๋ ํ ์คํธ๋ฅผ ํ๋ค ๊ฐ์ ์ ํ๋ฉด ํ ์คํธ๊ฐ ์คํจํ์ ๋ ํ์ฌ ๋ชจ๋์์์ ์คํจ์ธ์ง, ์์กดํ๋ ๋ชจ๋์ ์คํจ์ธ์ง ์ ์ ์๋ค.
์์กด์ฑ ์ฃผ์
(Dependency Injection)์ ์ฌ์ฉํ๋ค.
'new'๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๋ด์์ ํน์ ๋ชจ๋์ ์ด๊ธฐํํ์ง ์์ผ๋ ค๋ฉด ๊ฐ์ฒด ์์ฑ์ ๋ค๋ฅธ ๊ณณ์์ ํ ๋ค, ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ฉด ํด๊ฒฐ๋๋ค.
์์กด์ฑ ์ฃผ์ ์ IoC(Inversion of Control)๊ฐ๋ ์ ๋ฐํ์ผ๋ก ์ด๋ฃจ์ด์ง๊ธฐ์ ํด๋์ค๊ฐ ์ธ๋ถ๋ก๋ถํฐ ์์กด์ฑ(Dependency)๋ฅผ ๊ฐ์ ธ์ผ ํ๋ค.
Javaํด๋์ค๊ฐ new์ฐ์ฐ์๋ฅผ ํตํด ๋ค๋ฅธ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ฉด ํด๋น ํด๋์ค์ ๋ ๋ฆฝ์ ์ผ๋ก ํ ์คํธํ๊ณ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ด๋ฅผ ํ๋์ข ์์ฑ์ด๋ผ๊ณ ํ๋ค.
๐กSpring 3.0์ ์ฌ์ฉํ๋ค๋ฉด JSR-330 ์ด๋ ธํ ์ด์ (์์กด์ฑ ์ญ์ )์ ์ง์์ ๋ฐ์ ์ ์์ผ๋ฉฐ ํด๋น ์ด๋ ธํ ์ด์ ๋ค์ ์คํ๋ง ์ด๋ ธํ ์ด์ ๋ค๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ค์บ๋๋ค. ํด๋น ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ํด๋์ค path์ ๊ด๋ จ jar ํ์ผ๋ค์ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค.
@Inject๋ก ์ฃผ์์ฒ๋ฆฌ๋ ๋ฉ์๋๋ ํ๋๊ฐ ํธ์ถ๋๋ ์์๋ JSR330์ ์ํด ์ ์๋์ง ์๋๋ค.