Spring Framework?
์๋ฐ ํ๋ซํผ์ ์ํ ์คํ์์ค ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ๋ก์ ์ํฐํ๋ผ์ด์ฆ๊ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๊ธฐ ์ํ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ข ํฉ์ ์ผ๋ก ์ ๊ณตํ๋ ๊ฒฝ๋ํ๋ ์๋ฃจ์ ์ ๋๋ค.
์ํฐํ๋ผ์ด์ฆ๊ธ ๊ฐ๋ฐ์ด๋ ๋ป๋๋ก๋ง ํ์ดํ๋ฉด ๊ธฐ์ ์ ๋์์ผ๋ก ํ๋ ๊ฐ๋ฐ์ด๋ผ๋ ๋ง์ ๋๋ค. ์ฆ, ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ํธ๋์ญ์ ์ด ๋์์ ์ฌ๋ฌ ์ฌ์ฉ์๋ก ๋ถํฐ ํํด์ง๋ ๋งค์ฐ ํฐ ๊ท๋ชจ์ ํ๊ฒฝ์ ์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์ด๋ผ ์ผ์ปซ์ต๋๋ค.
Spirng Framework๋ ๊ฒฝ๋ ์ปจํ ์ด๋๋ก ์๋ฐ ๊ฐ์ฒด๋ฅผ ๋ด๊ณ ์ง์ ๊ด๋ฆฌํฉ๋๋ค. ๊ฐ์ฒด์ ์์ฑ ๋ฐ ์๋ฉธ ๊ทธ๋ฆฌ๊ณ ๋ผ์ดํ ์ฌ์ดํด์๊ด๋ฆฌํ๋ฉฐ ์ธ์ ๋ Spring ์ปจํ ์ด๋๋ก ๋ถํฐ ํ์ํ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด๋ Spirng์ด IOC ๊ธฐ๋ฐ์ Framework์์ ์๋ฏธํฉ๋๋ค.
Spring Framework๋ IOC๊ธฐ๋ฐ์ด๋ค.
IOC๋ Inversion of Control์ ์ฝ์๋ก ๋ง ๊ทธ๋๋ก ์ ์ด์ ์ญ์ ์ ๋๋ค. ๊ทธ๋ผ ์ ์ด์ ์ญ์ ์ด๋ ๋ฌด์์ผ๊น์?
์ผ๋ฐ์ ์ผ๋ก ์ง๊ธ๊น์ง ํ๋ก๊ทธ๋จ์
๊ฐ์ฒด ๊ฒฐ์ ๋ฐ ์์ฑ -> ์์กด์ฑ ๊ฐ์ฒด ์์ฑ -> ๊ฐ์ฑ ๋ด์ ๋ฉ์๋ ํธ์ถ ํ๋ ์์ ์ ๋ฐ๋ณตํ์ต๋๋ค.
์ด๋ ๊ฐ ๊ฐ์ฒด๋ค์ด ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ๊ฒฐ์ ํ๊ณ ๊ฐ ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑํ๋ ์์ ์ ์ง์ ์ ์ผ๋ก ์ฐธ์ฌํ ๊ฒ์ ๋๋ค.
์ฆ, ๋ชจ๋ ์์ ์ ์ฌ์ฉ์๊ฐ ์ ์ดํ๋ ๊ตฌ์กฐ์ธ ๊ฒ์ ๋๋ค.
ํ์ง๋ง IOC์์๋ ์ด ํ๋ฆ์ ๊ตฌ์กฐ๋ฅผ ๋ฐ๊ฟ๋๋ค. IOC์์์ ๊ฐ์ฒด๋ ์๊ธฐ๊ฐ ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ ์ ํํ๊ฑฐ๋ ์์ฑํ์ง ์๋๋ค. ๋ํ ์์ ์ด ์ด๋์ ๋ง๋ค์ด์ง๊ณ ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง ๋ํ ๋ชจ๋ฆ ๋๋ค. ์์ ์ ๋ชจ๋ ๊ถํ์ ๋ค๋ฅธ ๋์์ ์์ํจ์ผ๋ก ์จ ์ ์ด๊ถํ์ ์์๋ฐ์ ํน๋ณํ ๊ฐ์ฒด์ ์ํด ๊ฒฐ์ ๋๊ณ ๋ง๋ค์ด์ง๋๋ค.
์ฆ, ์ ์ด์ ํ๋ฆ์ ์ฌ์ฉ์๊ฐ ์ปจํธ๋กค ํ์ง ์๊ณ ์์ํ ํน๋ณํ ๊ฐ์ฒด์ ๋ชจ๋ ๊ฒ์ ๋งก๊ธฐ๋ ๊ฒ์ ๋๋ค.
IOC๋ ๊ธฐ์กด ์ฌ์ฉ์๊ฐ ๋ชจ๋ ์์ ์ ์ ์ดํ๋ ๊ฒ์ ํน๋ณํ ๊ฐ์ฒด์ ๋ชจ๋ ๊ฒ์ ์์ํ์ฌ ๊ฐ์ฒด์ ์์ฑ๋ถํฐ ์๋ช ์ฃผ๊ธฐ ๋ฑ ๋ชจ๋ ๊ฐ์ฒด์ ๋ํ ์ ์ด๊ถ์ด ๋์ด ๊ฐ ๊ฒ์ IOC, ์ ์ด์ ์ญ์ ์ด๋ผ๊ณ ํฉ๋๋ค.
IOC์ ๊ตฌ์ฑ์์ DI์ DL
DL(Dependency Lookup) - ์์กด์ฑ ๊ฒ์
์ปจํ ์ด๋์์๋ ๊ฐ์ฒด๋ค์ ๊ด๋ฆฌํ๊ธฐ ์ํด ๋ณ๋์ ์ ์ฅ์์ ๋น์ ์ ์ฅํ๋๋ฐ ์ ์ฅ์์ ์ ์ฅ๋์ด ์๋ ๊ฐ๋ฐ์๋ค์ด ์ปจํ ์ด๋์์ ์ ๊ณตํ๋ API ๋ฅผ ์ด์ฉํ์ฌ ์ฌ์ฉํ๊ณ ์ ํ๋ ๋น ์ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
DI(Dependency Injection) - ์์กด์ฑ ์ฃผ์
์์กด์ฑ ์ฃผ์ ์ด๋ ๊ฐ์ฒด๊ฐ ์๋ก ์์กดํ๋ ๊ด๊ณ๊ฐ ๋๊ฒ ์์กด์ฑ์ ์ฃผ์ ํ๋ ๊ฒ์ ๋๋ค. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋จ์์ ์์กด์ฑ ์ด๋ ํ๋์ ๊ฐ์ฒด๊ฐ ์ด๋ ํ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ณ ์์์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด IOC์์์ DI๋ ๋ฌด์์ผ๊น์?
๋ฐ๋ก ๊ฐ ํด๋์ค ์ฌ์ด์ ํ์๋ก ํ๋ ์์กด๊ด๊ณ๋ฅผ ๋น ์ค์ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์ปจํ ์ด๋๊ฐ ์๋์ผ๋ก ์ฐ๊ฒฐํด ์ฃผ๋ ๊ฒ์ ๋๋ค
Spring Framework์ ํน์ง POJO