๋ชฉ์ฐจ 1.๋คํ์ฑ์ด๋?(๋คํ์ฑ์ด๋ ํ๋ก๊ทธ๋จ ์ธ์ด ๊ฐ ์์๋ค(์์, ๋ณ์, ์, ๊ฐ์ฒด, ๋ฉ์๋ ๋ฑ)์ด ๋ค์ํ ์๋ฃํ(type)์ ์ํ๋ ๊ฒ์ด ํ๊ฐ๋๋ ์ฑ์ง์ ๊ฐ๋ฆฌํจ๋ค. - ์ํคํผ๋์ ์ค - ์ฌ๊ธฐ์ ์ด์ ์๋ฅผ ํด๋ผ์ด์ธํธ๋ผ๊ณ ํ์๊ณ ์๋์ฐจ๋ฅผ ์ธํฐํ์ด์ค๋ผ๊ณ ํ์!์ด์ ์(cli
ํ๋์ ํด๋์ค๋ ํ๋์ ์ฑ ์๋ง์ ๊ฐ์ ธ์ผ ํ๋ค!!โ ๏ธ ์ค์ํ ๊ธฐ์ค์ ๋ณ๊ฒฝ์ด๋ค . ๋ณ๊ฒฝ์ด ์์ ๋ ํ๊ธ ํจ๊ณผ๊ฐ ์ ์ผ๋ฉด ๋จ์ผ ์ฑ ์ ์์น์ ์ ๋ฐ๋ฅธ ๊ฒ์ด๋ค.ํด๋์ค๋ฅผ ๋ณ๊ฒฝํ๋ ์ด์ ๋ํ ํ๊ฐ์ง ๋ฟ ์ด์ด์ผ ํ๋ค!์ํํธ์จ์ด ์์๋ ํ์ฅ์๋ ์ด๋ ค ์์ผ๋ ๋ณ๊ฒฝ์๋ ๋ซํ ์์ด์ผ ํ๋ค!!
์คํ๋ง์ ํต์ฌ์ ์๊ธฐ ์ํด์ ๊ฐ์ฒด์งํฅ 5์์น(SOLID)์ ๋ํด ๋จผ์ ์๊ณ ์์ด์ผ ํ๋ค.ํ๋์ ์์๋ฅผ ํตํด ์์๋ณด์. ํ์์ ๊ฐ์ ํ๊ณ ํ์์ ์กฐํํ๋ ์์ ์ด๋ค.์ผ์ชฝ์ ํ์์ ๋ฑ๊ธ์ ๋ํ๋ด๋ ํด๋์ค (์์๋ค๋ผ๋ฆฌ ๋ชจ์ ๋์ enum(์ด๊ฑฐํ)์ด๊ณ ์ค๋ฅธ์ชฝ์ ํ์ ํด๋์ค์ด๋ค.์ผ
์์ ์ดํด๋ณธ ๋ด์ฉ์ ์์ ์๋ฐ ์ฝ๋๋ง์ ์ฌ์ฉํ์๋ค. ์ฌ๊ธฐ์ ์คํ๋ง์ ์ ์ฉํ๋ค.AppConfig ํด๋์ค์ ์ค์ ์ ๊ตฌ์ฑํ๋ค๋ ๋ป์ @Configuration์ ๋ถ์ฌ์ฃผ๊ณ , ๊ฐ ๋ฉ์๋์ @Bean์ ๋ถ์ฌ ์คํ๋ง ์ปจํ ์ด๋์ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๋คMemberAppํด๋์ค์๋ ์คํ๋ง
BeanFactory ์คํ๋ง ์ปจํ ์ด๋์ ์ต์์ ์ธํฐํ์ด์ค์ด๋ค. ์คํ๋ง ๋น์ ๊ด๋ฆฌํ๊ณ ์กฐํ(getBean())ํ๋ ์ญํ ๋ด๋น ApplicationContext BeanFactory ๊ธฐ๋ฅ์ ๋ชจ๋ ์์๋ฐ์ ์ ๊ณตํ๋ค. ApplicationContext๋ BeanFa
์คํ๋ง์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌํํ๋ ๋ชฉ์ ์ผ๋ก ์ฃผ๋ก ์ฌ์ฉํ๋ค. ๋ฐ๋ผ์ ์ฌ๋ฌ ๊ณ ๊ฐ์ด ๋์์ ์์ฒญ์ ํ๋ค!! ๋ค์๊ณผ ๊ฐ์ ๊ณ ๊ฐ์๊ฒ ๋์์ ์์ฒญ์ด ๋ค์ด์ฌ ๋ ๊ฐ์ฒด๊ฐ ๊ณ์ ์์ฑ๋์ด ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๊ฐ ๋งค์ฐ ์ฌํ ์ ์๋ค. ๋ํ ๊ฐ์ฒด์ ์์ฑ๋ ๋น์ฉ์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ์ ์ ์ฅ์์๋ ์์ฒญ๋ ๋น
์ ์ฝ๋์์ memberService ๋น์ ๋ง๋๋ ์ฝ๋๋ฅผ ๋ณด๋ฉด memberRepository()๋ฅผ ํธ์ถํ๊ณ
์์ ์คํ๋ง ๋น์ ๋ฑ๋กํ ๋ @Bean ์ ๋ ธํ ์ด์ ์ ๋ถ์ฌ ์ค์ ์ ๋ณด์ ์ง์ ๋ฑ๋กํ ์คํ๋ง ๋น์ ๋์ดํ๋ค. ๊ทธ๋ฐ๋ฐ ํฐ ํ๋ก์ ํธ์์๋ ๋ฑ๋กํด์ผ ํ ๋น์ด ์์ญ, ์๋ฐฑ๊ฐ๊ฐ ๋ ์ ๋ ์๋ค. ๋๋ฝํ ์๋ ์๋ค...๐ฑ ๊ทธ๋์ ์คํ๋ง์ ์ค์ ์ ๋ณด๊ฐ ์์ด๋ ์๋์ผ๋ก ์คํ๋ง ๋น์ ๋ฑ๋ก
์์ ์ด์ผ๊ธฐํ ์์กด๊ด๊ณ ์ฃผ์ (DI)๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ 4๊ฐ์ง๊ฐ ์๋ค.์์ฑ์๋ฅผ ํตํ ์ฃผ์ ๋ฐฉ๋ฒ, ์์ ์(Setter๋ฅผ ํตํด์) ์ฃผ์ ๋ฐฉ๋ฒ, ํ๋์ ์ง์ ์ฃผ์ (๋ณ์ ํ๋์ ์ง์ @Autowired ๋ถ์) ๋ฐฉ๋ฒ, ์ผ๋ฐ ๋ฉ์๋๋ฅผ ํตํ ์ฃผ์ ๋ฐฉ๋ฒ์ด ์๋ค!์ฐ์ ์ ์ฌ์ฉํ์ง ์๋ ๋ฐฉ๋ฒ
์์ ์์ฑ์๋ฅผ ํตํ ์์กด๊ด๊ณ ์ฃผ์ ์ ๋ํด ์์๋ณด์๋ค.๊ทธ๋ฐ๋ฐ ์์ฑ์๋ ๋ง๋ค๊ณ , ์ฃผ์ ๋ฐ์ ๊ฐ์ ๋์ ํ๋ ์ฝ๋ ๋ฑ ๋ง๋ค์ด์ผ ํ ๊ฒ์ด ๋๋ฌด ๋ง๋ค.... @Component์ @Autowired๋ฅผ ์ ์ฉํ ๊ธฐ์กด ์ฝ๋์ด๋ค.์์ฑ์๋ฅผ 1๊ฐ๋ง ๋๋ฉด ๋ค์๊ณผ ๊ฐ์ด @Autowired๋ฅผ ์
์์ ์์ ์ฝ๋์ ๋ํ ํ ์คํธ ์ฝ๋์ด๋ค.ํ ์คํธ ์ฝ๋๋ฅผ ์คํํ๋ฉด ๊ฐ์ฒด ์์ฑ ๋จ๊ณ์๋ ์ค์ ๋ url์ด ์๊ธฐ ๋๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ๊ฒ์ด๋ค. ์ฝ๋์์ setUrl(์์ ์ ์ฃผ์ )์ ํตํด์ผ๋ง url์ด ๋ง๋ค์ด์ง๋ค.๐๐ป์คํ๋ง ๋น์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ์์กด๊ด๊ณ ์ฃผ์ ์ด ๋ค