๐ก์์กด์ฑ(Dependency)์ด๋ผ๋ ๊ฒ์
ํ๋์ ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด ์์ด ์ ๋๋ก ๋ ์ญํ ์ ํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
์๋ฅผ ๋ค์ด ์์์ ์์ ์๋น์ ๋ด๋นํ๋ ์ง์์ด ๋ชป ๋์ค๋ ์ํฉ์ด ์์ด๋ ์ฅ์ฌ๋ ํ ์ ์์ง๋ง ์ฃผ๋ฐฉ์ฅ์ด ๋ชป ๋์จ๋ค๋ฉด ์ฅ์ฌ๋ฅผ ํ ์ ์๋ ์ผ์ด ๋ฐ์ํ๋ค. ์ด์ฒ๋ผ ์์กด์ฑ์ ํ๋์ ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด์ ์ํ์ ๋ฐ๋ผ ์ํฅ์ ๋ฐ๋ ๊ฒ์ ์๋ฏธํ๋ค.
ํํ A๊ฐ์ฒด๊ฐ B ๊ฐ์ฒด ์์ด ๋์์ด ๋ถ๊ฐ๋ฅํ ์ํฉ์ 'A๊ฐ B์ ์์กด์ ์ด๋ค'๋ผ๊ณ ํํํ๋ค.
์ฃผ์ (Injection)์ ๋ง ๊ทธ๋๋ก ์ธ๋ถ์์ '๋ฐ์ด ๋ฃ๋ ๊ฒ'์ ์๋ฏธํ๋ค.
์๋ฅผ ๋ค์ด ์ด๋ค ์์์ ์ ๊ฒฝ์ฐ ๋งค์ผ ๊ฐ๊ฒ๋ฅผ ์ด๊ธฐ ์ ์ง์ ์์ฌ๋ฃ๋ฅผ ๊ตฌํ๊ธฐ ์ํด ์ฅ์ ๋ณด์ง๋ง ํ๋์ฐจ์ด์ฆ ์๋น๋ค์ ๋ณธ์ฌ๊ฐ ํธ๋ญ ๋ฑ์ ์ด์ฉํด ์์ฌ๋ฃ๋ฅผ ๊ณต๊ธํ๋ค.
์ด ๋ ๊ฐ์ง ๋ฐฉ์์ ์ฐจ์ด๋ ํ์ํ ๊ฐ์ฒด๋ฅผ ์ป๊ธฐ ์ํด ์ฃผ์ฒด๊ฐ ๋ฅ๋์ ์ธ๊ฐ ์๋์ ์ธ์ง์ ๋ํ ๋ฌธ์ ์ด๋ค.
์์กด์ฑ๊ณผ ์ฃผ์ ์ ๊ฒฐํฉํด์ ์๊ฐํด ๋ณด๋ฉด '์ด๋ค ๊ฐ์ฒด๊ฐ ํ์ํ ๊ฐ์ฒด๋ฅผ ์ธ๋ถ์์ ๋ฐ์ด ๋ฃ๋๋ค'๋ ์๋ฏธ๊ฐ ๋๋ค.
๐ก. ๊ทธ๋ ๋ค๋ฉด ์ ์ธ๋ถ์์ ๊ฐ์ฒด๋ฅผ ์ฃผ์ ํ๋ ๋ฐฉ์์ ์ฌ์ฉํ ๊น?
์์์ ์ ์๋ฅผ ๋ค๋ฉด ์ง์ ์์ฌ๋ฃ๋ฅผ ์ฌ์ง ์๊ณ ๋ํ ์ ์ฒด์์ ๋ฐฐ์กํด ์ฃผ๋ ๊ฒ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํธ๋ฆฌํ๋ค๋ ์ฅ์ ์ ์๊ฐํ ์ ์๋ค.
์ด๋ฅผ ์ฝ๋์ ๋์ ํด๋ณด๋ฉด '์ฃผ์ ์ ๋ฐ๋ ์ ์ฅ์์๋ ์ด๋ค ๊ฐ์ฒด์ธ์ง ์ ๊ฒฝ ์ธ ํ์๊ฐ ์๋ค', '์ด๋ค ๊ฐ์ฒด์ ์์กดํ๋ ์์ ์ ์ญํ ์ ๋ณํ์ง ์๋๋ค'์ ๊ฐ์ ์๋ฏธ๋ก ๋ณผ ์ ์๋ค.
์์กด์ฑ ์ฃผ์ ๋ฐฉ์์ ์ฌ์ฉํ๋ ค๋ฉด ์์กด์ฑ์ด ํ์ํ ๊ฐ์ฒด์ ํ์ํ ๊ฐ์ฒด๋ฅผ ์ฐพ์์ ์ฃผ์ ํ๋ ์ญํ ์ด ํ์ํ๊ฒ ๋๋๋ฐ, ์คํ๋ง์ ์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ ๋ง๋๋๋ฐ ์ ํฉํ ๊ตฌ์กฐ๋ก ์ค๊ณ ๋์ด ์๋ค.
์คํ๋ง์์๋ ApplicationContext๋ผ๋ ์กด์ฌ๊ฐ ํ์ํ ๊ฐ์ฒด๋ค์ ์์ฑํ๊ณ ํ์ํ ๊ฐ์ฒด๋ค์ ์ฃผ์ ํ๋ ์ญํ ์ ํด์ฃผ๋ ๊ตฌ์กฐ์ด๋ค.
๋ฐ๋ผ์ ์คํ๋ง์ ์ด์ฉํ๋ฉด ๊ฐ๋ฐ์๋ค์ ๊ธฐ์กด์ ํ๋ก๊ทธ๋๋ฐ๊ณผ ๋ฌ๋ฆฌ ๊ฐ์ฒด์ ๊ฐ์ฒด๋ฅผ ๋ถ๋ฆฌํด์ ์์ฑํ๊ณ , ์ด๋ฌํ ๊ฐ์ฒด๋ค์ ์ฎ๋ ์์ ์ ํ๋ ํํ์ ๊ฐ๋ฐ์ ํ๊ฒ ๋๋ค.
'Dev > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring ์คํ๋ง 5๋ฒ์ Controller - @InitBinder (0) | 2023.04.06 |
---|---|
@PathVariable ๋ฆฌ๋ค์ด๋ ํธ ๊ตฌํํ๊ธฐ (0) | 2023.04.01 |
@PathVariable ์ ์ฉ๊ธฐ (0) | 2023.04.01 |
AJAX๋ฅผ ์ด์ฉํ ๋๊ธ ์ฒ๋ฆฌ (0) | 2022.11.07 |
์คํ๋ง 5 @Controller ๊ตฌํ๊ณผ ํ ์คํธ (0) | 2022.11.01 |
๋๊ธ