๋ง์ ์ฌ๋๋ค์ ์น ํ๋ก์ ํธ๋ฅผ ์ํ ํ
ํ๋ฆฟ ์์ฑ ๊ณผ ์๋ธ๋ฆฟ์ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ ์น ์๋น์ค ์์ฑ ์ ๋ํ ๋ด ๊ธฐ์ฌ๋ฅผ ์ฝ์ ํ ์ธ์ Spring์ ๋ํด ๊ธ์ ์ธ์ง ๊ถ๊ธํดํ์ต๋๋ค. ๋๋ ์ํ์ง ์์๊ณ ์ฑ
์ ์ฝ์ผ๋ผ๊ณ ์ ์ํ์ต๋๋ค. (๊ทธ๋ฆฌ๊ณ ๋๋ ์ฌ์ ํ ์ฑ
์ด ์ธํฐ๋ท์์ 10๊ฐ, ์ฌ์ง์ด 100๊ฐ์ ๊ธฐ์ฌ๋ณด๋ค ๋ซ๋ค๊ณ ๋งํฉ๋๋ค.) ํ์ง๋ง ์ด์ ๋ ๊ฐ์ ๋ด์ฉ์ ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ์ค๋ช
ํ๋ ๊ฒ์ด ํ ๋ฒ ์์์ ๊ธฐ์ฌ๋ฅผ ์ด ๋ค์ ๋งํฌ๋ฅผ ๊ฒ์ํ๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ์๊ฐ์ ์๋นํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๊ทธ๋์ ๋งํฌ๋ฅผ ์ํด ๊ธ์ ์ฐ๊ณ ์์ต๋๋ค)). ์ด ๊ธฐ์ฌ์์๋ ์์ ๋ฅผ ๋ฐ๋ผ 5๋ถ ๋ง์ Spring์์ ์์
ํ๋ก์ ํธ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ฐ์ง ์์ ๊ฒ์
๋๋ค. ๋๋ ํ๋ก์ ํธ๋ฅผ ์์ํ๋ ๊ฒ์ด ํ์คํ ๊ฐ๋ฅํ๋ค๋ ์ง์ ์์ด ๊ธฐ๋ณธ์ ์ธ ๊ฒ๋ค์ ๋ํด์๋ง ์ธ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ ๊ฑฐ๊ธฐ์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง, ๊ทธ๋ฆฌ๊ณ ๋ ์ค์ํ ๊ฒ์ ์ ๋ช
ํํ์ง ์์ ๊ฒ์
๋๋ค.
๋ณด์๋ค์ํผ ์คํ๋ง์ ๋ชจ๋์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์
์ ํ์ํ ๋ชจ๋๋ง ์ฐ๊ฒฐํ ์ ์๊ณ ๋ถ๋ช
ํ ์ฌ์ฉํ์ง ์์ ๋ชจ๋์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ๋ด๊ฐ ์๋ ํ, Spring์ด ๋น์์ ๊ฒฝ์์(EJB)๋ฅผ ๋ฅ๊ฐํ๊ณ ์ ๋๋ฅผ ์ฐจ์งํ ์ ์์๋ ๊ฒ์ ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ด์์ต๋๋ค. EJB๋ฅผ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ง์ ์ข
์์ฑ์ ๊ฐ์ ธ์๊ณ ์ผ๋ฐ์ ์ผ๋ก ๋๋ฆฌ๊ณ ์ํฌ๋ฅธ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ์ด๋ฏธ์ง๋ ์คํ๋ง ํ๋ ์์ํฌ๊ฐ ์ฌ๋ฌ ๋ชจ๋๋ก ๊ตฌ์ฑ๋์ด ์์์ ๋ณด์ฌ์ค๋๋ค.
์คํ๋ง ํ๋ ์์ํฌ๋ ๋ฌด์์ธ๊ฐ์?
Spring Framework ๋๋ ๊ฐ๋จํ Spring์ Java๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋ ๋ฐ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํ๋ ์์ํฌ ์ค ํ๋์ ๋๋ค. ํ๋ ์์ํฌ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์ฌํ์ง๋ง(์๋ง๋ ์ด ์ฉ์ด๊ฐ ์ฌ๋ฌ๋ถ์๊ฒ ๋ ์น์ํ ๊ฒ์) ํ ๊ฐ์ง ์์ ์ด ์์ต๋๋ค. ๋๋ต์ ์ผ๋ก ๋งํ์๋ฉด, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ทธ ์์ ์๋ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ํ์ํ ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ํ์ํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ์ฆ, ๋ณด๋ค ํ์์ ์ธ ์ ๊ทผ ๋ฐฉ์์ด ์์ต๋๋ค. ์ด๋ค ๊ฐ์ฒด๋ฅผ ์์ฑํด์ผ ํ๋ ํน์ ์๊ฐ, ํน์ ๋ฉ์๋๋ฅผ ํธ์ถํด์ผ ํ๋ ์๊ฐ ๋ฑ์ ํ๋ก๊ทธ๋จ์ ๋ช ํํ๊ฒ ํ์ํฉ๋๋ค. ํ๋ ์์ํฌ์์๋ ์ํฉ์ด ์ฝ๊ฐ ๋ค๋ฆ ๋๋ค. ์์ ๋ง์ ํด๋์ค ์ผ๋ถ๋ฅผ ์์ฑํ๊ณ ๊ฑฐ๊ธฐ์ ๋ก์ง์ ์ผ๋ถ๋ฅผ ์์ฑํ๋ฉด ํ๋ ์์ํฌ ์์ฒด๊ฐ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ํด๋์ค๋ ํ๋ ์์ํฌ์์ ์ผ๋ถ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ฑฐ๋ ํ๋ ์์ํฌ์์ ์ผ๋ถ ํด๋์ค๋ฅผ ์์ํ์ฌ ์ด๋ฏธ ์์ฑ๋ ๊ธฐ๋ฅ ์ค ์ผ๋ถ๋ฅผ ๋ฐ์ต๋๋ค. ํ์ง๋ง ๊ผญ ๊ทธ๋ ๊ฒ ๋ ํ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด Spring์์๋ ๊ฐ๋ฅํ ํ ์ด๋ฌํ ์๊ฒฉํ ๊ฒฐํฉ์์ ๋ฒ์ด๋๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ (ํด๋์ค๊ฐ ์ด ํ๋ ์์ํฌ์ ์ผ๋ถ ํด๋์ค/์ธํฐํ์ด์ค์ ์ง์ ์์กดํ๋ ๊ฒฝ์ฐ) ์ด๋ฌํ ๋ชฉ์ ์ผ๋ก ์ฃผ์์ ์ฌ์ฉํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋์ค์ ์ด ์ ์ผ๋ก ๋์์ฌ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ Spring์ ์ด๋ฏธ ์ฌ๋ฌ๋ถ์ ์ํด ์์ฑ๋ ์ผ๋ถ ํด๋์ค์ ์ธํฐํ์ด์ค์ ์งํฉ์ผ ๋ฟ์ด๋ผ๋ ์ ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค :) ์ ๋ ๋ํ Spring์ด ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ฟ๋ง ์๋๋ผ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ฝ์์๋ ์ฌ์ฉ๋ ์ ์๋ค๋ ์ ์ ์ฆ์ ์ธ๊ธํ๊ณ ์ถ์ต๋๋ค . ์ฐ๋ฆฌ ๋ชจ๋์๊ฒ ๋๋ฌด๋ ์ต์ํ ์ ํ๋ฆฌ์ผ์ด์ ๊ทธ๋ฆฌ๊ณ ์ค๋ ์ฐ๋ฆฌ๋ ๊ทธ๋ฐ ๊ฒ๋ ์ธ ๊ฒ์ ๋๋ค.๊ตฌ์กฐ
๊ทธ๋ฌ๋ Spring์ ํ๋์ ํน์ ํ๋ ์์ํฌ๊ฐ ์๋๋๋ค. ์ด๋ ๊ฐ๊ฐ ์๋ก ๋ค๋ฅธ ์์ ์ ์ํํ๋ ์ฌ๋ฌ ์์ ํ๋ ์์ํฌ์ ์ผ๋ฐ์ ์ธ ์ด๋ฆ์ ๋๋ค.- ๋ฐ์ดํฐ ์ ๊ทผ;
- ํธ๋ฌผ;
- ํต์ฌ;
- ๋ค๋ฅธ ์ฌ๋.
์ Java์์ Spring์ ์ฌ์ฉํ๋๊ฐ?
๊ธ์์, ๊ทธ๊ฒ์ด ํจ์ ๋๋ธํ๊ณ ์คํ์ผ๋ฆฌ์ฌํ๋ฉฐ ์ ๋ค๋ ์ฌ์ค ์ธ์๋, ๊ทธ๊ฒ์ ์กฐ๊ธ๋ง ์ตํ๋ฉด ์ง๊ธ์ ์ผ๋ง๋ ๋ง์ ๋ค๋ฅธ ์ผ์ ํ ํ์๊ฐ ์๊ณ ๋ด์ด ์ผ๋ง๋ ๋ง์์ง ์ดํดํ ์ ์์ ๊ฒ์ด๋ผ๊ณ ์ฆ์ ๋งํ ์ ์์ต๋๋ค. ๋งก๋๋ค. ์์ญ ์ค์ ๊ตฌ์ฑ์ ์์ฑํ๊ณ ํด๋์ค ๋ช ๊ฐ๋ฅผ ์์ฑํ๋ฉด ์๋ํ๋ ํ๋ก์ ํธ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ "๋ด๋ถ"์๋ ์ผ๋ง๋ ๋ง์ ๊ฒ์ด ์๋์ง, ์ํ ์ค์ธ ์์ ์ ์์ ์ผ๋ง๋ ๋๋์ง, ๋์ผํ ํ๋ก์ ํธ๋ฅผ ๋ฒ ์ด ์๋ธ๋ฆฟ์ด๋ ์์ผ ๋ฐ ์์ Java์์ ์ํํ๋ค๋ฉด ์ผ๋ง๋ ๋ง์ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋์ง ์๊ฐํ๊ธฐ ์์ํ์๋ง์ -๋จธ๋ฆฌ์นด๋ฝ์ด ์ญ๋ผ ์ฐ์ด์ :) ๋ด์ '๋ง๋ฒ' ๊ฐ์ ํํ๋ ์์ด์. ์ด๋ ๋ชจ๋ ๊ฒ์ด ์๋ํ๊ณ ์์์ ์ ์ ์์ง๋ง ๋ชจ๋ ๊ฒ์ด ์๋ํ๊ธฐ ์ํด ๊ทธ๊ณณ์์ ์ผ๋ง๋ ๋ง์ ์ผ์ด ์ผ์ด๋์ผ ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ณณ์์ ๋ชจ๋ ๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ๋๋ต์ ์ผ๋ก ์ถ์ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ด ๋ชจ๋ ๊ฒ์ด ์ค์ ๋ก ์ผ์ข ์ ๋ง๋ฒ ๋๋ถ์ ์ผ์ด๋๋ ๊ฒ ๊ฐ์ต๋๋ค.)) ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ์ํธ ์ฐ๊ฒฐ๋์ด ์๋์ง ์ค๋ช ํ๋ ค๊ณ ํ๊ธฐ๋ณด๋ค๋ ๊ทธ๊ฒ์ ๋ชจ๋ ๋ง์ ์ด๋ผ๊ณ ๋ถ๋ฅด์ญ์์ค. :) ๊ธ์์, Spring ํ์ต์ "์ํ"๋ ๋ฒ์งธ ์ฃผ์ฅ์ ํ๋ฐฐ๋ฅผ์ํ ๊ณต์์ ์ฝ 90 %์์ (๋ด ๊ฐ์ธ์ ์ธ ๊ด์ฐฐ์ ๋ฐ๋ฅด๋ฉด) ์ ์ฌ์ Spring ์ธํธ์ ๋ํ ์ง์์ด๋ ์ ์ด๋ ์ผ๋ฐ์ ์ธ ์์ด๋์ด๊ฐ ์๋ค๋ ๊ฒ ์ ๋๋คdata
. :) ๊ธฐ๋ณธ๋ง ํ์ํฉ๋๋ค. web-mvc
security
DI/IoC
Spring์์ ๋ฌด์ธ๊ฐ๋ฅผ ์ฝ์ผ๋ ค๊ณ ํ๋ค๋ฉด ๊ฐ์ฅ ๋จผ์ ์ ํ๊ฒ ๋๋ ๊ฒ์ ์๋ง๋ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์์ผ ๊ฒ์ ๋๋ค: DI/IoC . ์ด์ ์ด ๊ธฐ์ฌ์์ ์ ์ ๋ฒ์ด๋ Habrรฉ์ ๊ดํ ์ด ๊ธฐ์ฌ๋ฅผ ์ฝ์ด ๋ณด์๊ธฐ ๋ฐ๋๋๋ค ! IoC(์ ์ด ๋ฐ์ ) - ์ ์ด ๋ฐ์ . ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋ ํธ์ถํ ๊ฐ์ฒด์ ์ด๋ค ๋ฉ์๋๋ฅผ ์ฝ๋์ ์ง์ ์์ฑํด์ผ ํ๋ฉฐ, ํ๋ ์์ํฌ์ ๊ฒฝ์ฐ ํ๋ ์์ํฌ๋ ์ค๋ฅธ์ชฝ์ ์์ฑํ ์ฝ๋๋ฅผ ํธ์ถํ๋ ๊ฒฝ์ฐ๊ฐ ๊ฐ์ฅ ๋ง๋ค๊ณ ์ผ์ ๋ ์ด๋ฏธ ์ธ๊ธํ์ต๋๋ค. ์๊ฐ. ์ฆ, ์ฌ๊ธฐ์๋ ๋ ์ด์ ์ฝ๋/ํ๋ก๊ทธ๋จ ์คํ ํ๋ก์ธ์ค๋ฅผ ์ ์ดํ์ง ์์ง๋ง ํ๋ ์์ํฌ๊ฐ ์ด๋ฅผ ์ํํฉ๋๋ค. ๊ทํ๋ ๊ทธ์๊ฒ ํต์ ๊ถ์ ์ด์ ํ์ต๋๋ค(์ง๋ฐฐ๊ถ ์ญ์ ). DI๋ ์ข ์์ฑ ๋ฐ์ (์ข ์์ฑ ๋ฐ์ , ์ฆ ํ ํด๋์ค๊ฐ ๋ค๋ฅธ ํด๋์ค์ ์ง์ ์ฐ๊ฒฐ๋๋ ๋ชจ๋/ํด๋์ค ๊ฐ์ ํ๋ ์ฐ๊ฒฐ์ ๋ง๋ค์ง ์์ผ๋ ค๋ ์๋) ๋๋ ์ข ์์ฑ ์ฃผ์ (์ข ์์ฑ ์ฃผ์ , ์ด๋ cat ๊ฐ์ฒด๊ฐ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ) ์ผ๋ก ์ดํด๋ฉ๋๋ค. ๋ฉ์ธ์์ ๋น์ ์ด ์์ฑํ ๋ค์ ๋น์ ์ ๊ทธ๊ฒ์ ๋น์ ์ ๋ฉ์๋์ ์ ๋ฌํ๊ณ , Spring์ ๋น์ ์ ์ํด ๊ทธ๊ฒ๋ค์ ์์ฑํ๊ณ , ๋น์ ์ ๊ทธ์๊ฒ "์ฌ๊ธฐ์ ๊ณ ์์ด๋ฅผ ํค์ฐ๊ณ ์ถ๋ค"๋ผ๊ณ ๋งํ๋ฉด ๊ทธ๋ ๊ทธ๊ฒ์ ๋น์ ์ ๋ฉ์๋์์ ๋น์ ์๊ฒ ์ ๋ฌํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ค์ ๊ธฐ์ฌ์์ ๋ ๋ฒ์งธ๋ฅผ ๋ ์์ฃผ ์ ํ๊ฒ ๋ ๊ฒ์ ๋๋ค.๋น๊ณผ ์ปจํ ์คํธ
Spring์ ์ฃผ์ ๊ฐ๋ ์ค ํ๋๋ bean ์ ๋๋ค . ๋ณธ์ง์ ์ผ๋ก ๊ทธ๊ฒ์ ๋จ์ง ์ผ๋ถ ํด๋์ค์ ๊ฐ์ฒด์ผ ๋ฟ์ ๋๋ค . ์ฐ๋ฆฌ ํ๋ก๊ทธ๋จ์์ ๊ณ ์์ด, ๊ฐ, ์ต๋ฌด์์ ์ธ ๊ฐ์ง ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ฌ๋ฌ ๋ฉ์๋๊ฐ ์๋ ์ฌ๋ฌ ํด๋์ค๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋๋ก๋ ๋ฉ์๋์ ๊ณ ์์ด๊ฐ ํ์ํ๊ณ ๋ค๋ฅธ ๋ฉ์๋์๋ ๊ฐ๊ฐ ํ์ํ๋ฉฐ ๋๋ก๋ ๊ณ ์์ด์ ์ต๋ฌด์๊ฐ ํ์ํ ๋ฉ์๋๋ ์์ต๋๋ค(์: ๋ฉ์๋ ๊ณ ์์ด์๊ฒ ๋จน์ด๋ฅผ ์ฃผ๋ ค๋ฉด ํคํค), ์ด๋ค ๋ฐฉ๋ฒ์์๋ ์ธ ๊ฐ์ง ๊ฐ์ฒด๊ฐ ๋ชจ๋ ํ์ํ ๊ฒ์ ๋๋ค. ์, ๋จผ์ ๋ฉ์ธ์์ ์ด ์ธ ๊ฐ์ง ๊ฐ์ฒด๋ฅผ ๋ง๋ ๋ค์ ์ด๋ฅผ ํด๋์ค์ ์ ๋ฌํ๊ณ , ํด๋์ค ๋ด์์ ํ์ํ ๋ฉ์๋๋ก ์ ๋ฌํ ์ ์์ต๋๋ค. ํ๋ก๊ทธ๋จ ์ ์ฒด์์ ์ด๋ฐ ์์ผ๋ก ์งํ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฉ์๋์ ํ์ฉ๋๋ ๋งค๊ฐ๋ณ์ ๋ชฉ๋ก์ ๋ณ๊ฒฝํ๊ณ ์ถ๋ค๊ณ ์๊ฐํ๋ค๋ฉด(์, ๋ฌด์ธ๊ฐ๋ฅผ ๋ค์ ์์ฑํ๊ฑฐ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค) ํ์ํ ๊ฒฝ์ฐ ์ฝ๋๋ฅผ ์๋นํ ๋ง์ด ํธ์งํด์ผ ํฉ๋๋ค. ๋ฌด์ธ๊ฐ๋ฅผ ๋ฐ๊พธ๋ค. ์ด์ ๊ทธ๋ฌํ ๊ฐ์ฒด๊ฐ 3๊ฐ๊ฐ ์๋๋ผ 300๊ฐ ์๋ค๊ณ ์์ํด ๋ณด๋ฉด ์ด๋จ๊น์? ๋์์ ๊ทธ๋ฌํ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ํ๋์ ๊ณตํต ๊ฐ์ฒด ๋ชฉ๋ก( List<Object> )์ผ๋ก ์์งํ์ฌ ๋ชจ๋ ๋ฉ์๋์ ์ ๋ฌํ๊ณ ๋ฉ์๋ ๋ด๋ถ์์ ํ์ํ ๊ฐ์ฒด ๋๋ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋๋ค. ํ์ง๋ง ํ๋ก๊ทธ๋จ์ด ์งํ๋จ์ ๋ฐ๋ผ ์ผ๋ถ ๊ฐ์ฒด๊ฐ ์ด ๋ชฉ๋ก์ ์ถ๊ฐ๋๊ฑฐ๋ (๋ ๋์ ๊ฒ์) ์ญ์ ๋ ์ ์๋ค๊ณ ์์ํ๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ๊ทธ๋ฐ ๋ค์ ๋ชฉ๋ก์์ ์์ธ์ผ๋ก ๊ฐ์ฒด๋ฅผ ๊ฒ์ํ๋ ๋ชจ๋ ๋ฐฉ๋ฒ์์ ๋ชจ๋ ๊ฒ์ด ์ค๋จ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ชฉ๋ก์ด ์๋ ๋งต์ ์ ์ฅํ๊ธฐ๋ก ๊ฒฐ์ ํฉ๋๋ค. ์ฌ๊ธฐ์ ํค๋ ํ์ํ ๊ฐ์ฒด์ ์ด๋ฆ์ด ๋๊ณ ๊ฐ์ ๊ฐ์ฒด ์์ฒด๊ฐ ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ด๋ฆ๋ง์ผ๋ก ํ์ํ ๊ฐ์ฒด๋ฅผ ์ป์ ์ ์์ต๋๋ค. : get("parrot") ๊ทธ๋ฆฌ๊ณ ์ด์ ๋ํ ์๋ต์ผ๋ก ์ต๋ฌด์ ๊ฐ์ฒด๋ฅผ ๋ฐ์์ต๋๋ค. ๋๋ ์๋ฅผ ๋ค์ด ํค๊ฐ ๊ฐ์ฒด์ ํด๋์ค์ด๊ณ ๊ฐ์ด ๊ฐ์ฒด ์์ฒด๋ผ๋ฉด ๋ ์ด์ ๊ฐ์ฒด์ ์ด๋ฆ์ ํ์ํ ์ ์๊ณ ๋จ์ํ ํ์ํ ๊ฐ์ฒด์ ํด๋์ค๋ง ํ์ํ ์ ์์ด ํธ๋ฆฌํฉ๋๋ค. ๋๋ ์ง๋ ์์ ์ผ์ข ์ ๋ํผ๋ฅผ ์์ฑํ์ฌ ์ด๋ค ๊ฒฝ์ฐ์๋ ์ด๋ฆ์ผ๋ก, ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ ํด๋์ค๋ณ๋ก ๊ฐ์ฒด๋ฅผ ๊ฒ์ํ ์ ์๋๋ก ๋ฉ์๋๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ด๊ฒ์ด ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์คํธ ์์ ์ป์ ๊ฒ์ ๋๋ค . ์ปจํ ์คํธ๋ Bean(๊ฐ์ฒด)์ ์งํฉ์ ๋๋ค. ์ปจํ ์คํธ๋ฅผ ์ดํด๋ณด๋ฉด ์ด๋ฆ์ด๋ ์ ํ ๋ฑ์ผ๋ก ํ์ํ ๋น(๊ฐ์ฒด)์ ์ป์ ์ ์์ต๋๋ค. ๊ฒ๋ค๊ฐ ์ฐ๋ฆฌ๋ Spring์๊ฒ ์ปจํ ์คํธ์์ ํ์ํ ๋น์ ์ฐพ์ ๋ฉ์๋์ ์ ๋ฌํ๋๋ก ์์ฒญํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ ๋ฉ์๋๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.public void doSomething(Cat cat) {
...
}
Spring์ด ์ฐ๋ฆฌ๋ฅผ ์ํด ์ด ๋ฉ์๋๋ฅผ ํธ์ถํ์ ๋, Spring์ ์ปจํ
์คํธ์์ ๊ณ ์์ด์ ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ์ต๋๋ค. ์ด์ ์ฐ๋ฆฌ๋ ๊ณ ์์ด ์ธ์ ์ต๋ฌด์๋ ํ์ํ๋ค๊ณ ๊ฒฐ์ ํ์ต๋๋ค. ์คํ๋ง์ ์ฌ์ฉํ๋ฉด ์ด๋ณด๋ค ๋ ์ฌ์ด ์ผ์ ์์ต๋๋ค! ์ฐ๋ฆฌ๋ ๊ฐ๋จํ ๋ค์๊ณผ ๊ฐ์ด ์๋๋ค:
public void doSomething(Cat cat, Parrot parrot) {
...
}
๊ทธ๋ฆฌ๊ณ Spring์ด ์ด ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ์ฌ๊ธฐ์์ ๊ณ ์์ด์ ์ต๋ฌด์๋ฅผ ์ ๋ฌํ๊ณ ์ปจํ
์คํธ๋ก ์ด๋ํ์ฌ ์ด ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์์ ์ฐ๋ฆฌ ๋ฉ์๋์ ์ ๋ฌํด์ผ ํ๋ค๋ ๊ฒ์ ์ดํดํฉ๋๋ค. ์ฐ๋ฆฌ ํ๋ก๊ทธ๋จ์ ๊ณ ์๋ฅผ Spring์ ๋๊ฒจ์ค์ผ๋ก์จ ์ฐ๋ฆฌ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ ๊ทธ๊ฐ ํธ์ถํ ๋ฉ์๋์ ์ ๋ฌํ๋ ์ฑ
์๋ ๊ทธ์๊ฒ ๋๊ฒผ์ต๋๋ค. ์ง๋ฌธ์ด ์๊น๋๋ค: Spring์ด ์ด๋ค ๊ฐ์ฒด(bin)๋ฅผ ์์ฑํ ์ง ์ด๋ป๊ฒ ์ ์ ์์ต๋๊น?
์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ฑ ๋ฐฉ๋ฒ
์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ๋ ์ธ ๊ฐ์ง ์ฃผ์ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค (์ฆ, ์์ ํด์ผ ํ ๊ฐ์ฒด๋ฅผ Spring์ ์๋ ค์ค๋๋ค):- XML ํ์ผ/๊ตฌ์ฑ ์ฌ์ฉ;
- Java ๊ตฌ์ฑ ์ฌ์ฉ;
- ์๋ ๊ตฌ์ฑ.
- ์ฐ์ ์์๋ฅผ ๋ถ์ฌํด์ผ ํ๋ ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ ๋ฐฉ๋ฒ์ ์๋ ๊ตฌ์ฑ์ ๋๋ค.
- ์๋ ๊ตฌ์ฑ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ฐ๋ฅํ ๋ชจ๋ Bean์ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ Java ๊ตฌ์ฑ(Java ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ์์ฑ)์ ์ฌ์ฉํ์ญ์์ค.
- ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋ฎ์ ๋ฐฉ์์ XML ๊ตฌ์ฑ์ ์ฌ์ฉํ๋ ๊ตฌ์ ๋ฐฉ์์ ๋๋ค.
GO TO FULL VERSION