@Controller public class MemberController { private final MemberService memberService; @Autowired public MemberController(MemberService memberService) { this.memberService = memberService; } }
์์ฑ์์ @Autowired๊ฐ ์์ผ๋ฉด ์๋์ผ๋ก ์คํ๋ง์ด ์ฐ๊ด๋ ๊ฐ์ฒด๋ฅผ ์คํ๋ง ์ปจํ ์ด๋์์ ์ฐพ์์ ๋ฃ์ด์ค๋ค. ์ด๋ ๊ฒ ๊ฐ์ฒด๋ฅผ ์์กด๊ด๊ณ๋ฅผ ์ธ๋ถ์์ ๋ฃ์ด์ฃผ๋ ๊ฒ์ DI(Dependency Injection) ์์กด์ฑ ์ฃผ์ ์ด๋ผ๊ณ ํ๋ค.
์ฌ๊ธฐ์ ์์กด์ฑ ์ฃผ์ (DI Dependency Injection)์ด๋ ๋ฌด์์ผ๊น????
์์กด์ฑ(Dependency)์ด๋ ํ๋์ ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด์ ์ํ์ ๋ฐ๋ผ ์ํฅ์ ๋ฐ๋ ๊ฒ์ด๋ค.
์ฆ ํ๋์ ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด ์์ด ์ ๋๋ก ๋ ์ญํ ์ ํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
ํํ A๊ฐ์ฒด๊ฐ B๊ฐ์ฒด ์์ด ๋์์ด ๋ถ๊ฐ๋ฅํ ์ํฉ์ 'A๊ฐ B์ ์์กด์ ์ด๋ค.'๋ผ๊ณ ํํํ๋ค.
์ฃผ์ ์ ๋ง ๊ทธ๋๋ก ์ธ๋ถ์์ ๋ฐ์ด ๋ฃ๋ ๊ฒ'์ ๋ปํ๋ค.
์ด์ ์์กด์ฑ๊ณผ ์ฃผ์ ์ ๊ฒฐํฉํด์ ์๊ฐํด๋ณด๋ฉด '์ด๋ค ๊ฐ์ฒด๊ฐ ํ์ํ ๊ฐ์ฒด๋ฅผ ์ธ๋ถ์์ ๋ฐ์ด ๋ฃ๋๋ค.'๋ผ๋ ์๋ฏธ์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ์? ์ธ๋ถ์์ ๊ฐ์ฒด๋ฅผ ์ฃผ์ ํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋์ง์ ๋ํด ์๊ฐํด๋ณผ ํ์๊ฐ ์๋ค.
์ดํด๋ฅผ ์ฝ๊ฒ ํ๊ธฐ ์ํด ์์์ ์ ์๋ก ๋ค์ด๋ณด์
์์์ ์์ ์ฃผ๋ฌธ์ด ๋ค์ด์ค๋ฉด ์์์ ์กฐ๋ฆฌ ํ ์๋น์๋ค์๊ฒ ๋ฐฐ๋ฌํ๋ ์ํฉ์ ๊ฐ์ ํด ๋ณด์
์ด๋ ์์์ ์์ ์ง์ ์๋น์๋ค์๊ฒ ๋ฐฐ๋ฌํ์ง ์๊ณ , ๋ฐฐ๋ฌ๋ํ์
์ฒด๋ฅผ ํตํด์ ๋ฐฐ๋ฌํ๋ค๋ฉด,
์์์ ์
์ฅ์์๋ ์์์ ์ฃผ๋ฌธ์ ๋ฐ๊ณ , ์กฐ๋ฆฌํ๋ ๊ฒ๋ง ์ง์คํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
์ด๋ฅผ ์ฝ๋์ ๋์
ํด์ ๋ณด๋ฉด ์ฃผ์
์ ๋ฐ๋ ๊ฐ์ฒด ์
์ฅ์์๋ ์ด๋ค ๊ฐ์ฒด๋ ์์ ์ ์ญํ ์ ๋ณํ์ง ์๋๋ค. ๋ผ๋ ์๋ฏธ๋ก ๋ณผ ์ ์๋ค.
์์กด์ฑ ์ฃผ์ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ๋ ๋ฒ์งธ ๊ทธ๋ฆผ์ ๋ฐ๊นฅ์ชฝ ๋ํ์ฒ๋ผ ์ถ๊ฐ์ ์ธ ํ๋์ ์กด์ฌ๊ฐ ํ์ํ๊ฒ ๋๋ค. ์ด ์กด์ฌ๋ ์์กด์ฑ์ด ํ์ํ ๊ฐ์ฒด์ ํ์ํ ๊ฐ์ฒด๋ฅผ ์ฐพ์์ ์ฃผ์ ํ๋ ์ญํ ์ ํ๊ฒ ๋๋ค.
์คํ๋ง์ ์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ๋ฐ ์ ํฉํ ๊ตฌ์กฐ๋ก ์ค๊ณ๋์ด ์๋ค.
์คํ๋ง์์๋ 'ApplicationContext'๋ผ๋ ์กด์ฌ๊ฐ ํ์ํ ๊ฐ์ฒด๋ค์ ์์ฑํ๊ณ , ํ์ํ ๊ฐ์ฒด๋ค์ ์ฃผ์
ํ๋ ์ญํ ์ ํด ์ฃผ๋ ๊ตฌ์กฐ์ด๋ค. ๋ฐ๋ผ์ ์คํ๋ง์ ์ด์ฉํ๋ฉด ๊ฐ๋ฐ์๋ค์ ๊ธฐ์กด์ ํ๋ก๊ทธ๋๋ฐ๊ณผ ๋ฌ๋ฆฌ ๊ฐ์ฒด์ ๊ฐ์ฒด๋ฅผ ๋ถ๋ฆฌํด์ ์์ฑํ๊ณ , ์ด๋ฌํ ๊ฐ์ฒด๋ค์ ์ฎ๋ ์์
์ ํ๋ ํํ์ ๊ฐ๋ฐ์ ํ๊ฒ ๋๋ค.
์คํ๋ง์์๋ ApplicationContext๊ฐ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด๋ค์ ๋น(Bean)์ด๋ผ๋ ์ฉ์ด๋ก ๋ถ๋ฅด๊ณ , ๋น๊ณผ ๋น ์ฌ์ด์ ์์กด๊ด๊ณ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ผ๋ก XML ์ค์ , ์ด๋
ธํ
์ด์
์ค์ , JAVA ์ค์ ๋ฐฉ์์ ์ด์ฉํ ์ ์๋ค.
๊ธ ์๋ดค์ต๋๋ค!!