์คํ๋ง์ด ์ ํ์ํ๊ฒ ๋์์๊น?
์คํ๋ง ํ๋ ์์ํฌ๋ ๋ก๋ ์กด์จ์ด 2004๋ ์ ๋ง๋ ์คํ์์ค ํ๋ ์์ํฌ์ ๋๋ค. ์คํ๋ง ํ๋ ์์ํฌ ์ด์ ์ ์๋ฐ ๊ธฐ๋ฐ์ ์ํฐํ๋ผ์ด์ฆ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋๋ถ๋ถ EJB(Enterprise Java Beans)๋ก ๊ฐ๋ฐ๋์์์ฃ . ํ์ง๋ง EJB๋ ํ์ต์ ๋ง์ ์๊ฐ์ด ํ์ํ๊ณ , ๊ฐ๋ฐ ๋ฐ ์ ์ง๋ณด์๊ฐ ์ด๋ ต๋ค๋ ์ , ๊ทธ๋ฆฌ๊ณ EJB ์ปดํฌ๋ํธ๋ฅผ ๋ฐฐ์นํ๊ธฐ ์ํ WAS(Web Application Server)๊ฐ ๊ต์ฅํ ๊ณ ๊ฐ์ ์ฅ๋น์๊ธฐ์ ๋ง์ ๊ฐ๋ฐ์๋ค์ ์ธ๋ฉด์ ๋ฐ์์ต๋๋ค.
๋ฌผ๋ก EJB์ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ ์๋๋๋ค. ๊ทธ๋ ๊ธฐ์ ๊ธด ์๊ฐ๋์ ์ฌ์ฉ๋ฌ๊ฒ ์ฃ . ํ์ง๋ง EJB์ ๋ฌธ์ ์ ์ EJB ๋ต๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ต์ฅํ ์ด๋ ต๋ค๋ ์ ์ ๋๋ค. EJB๋ฅผ ์ ๋๋ก ์ฌ์ฉํ๋ ค๋ฉด EJB์ ์ฑ๋ฅ์ ์ ์งํด์ฃผ๊ณ , ๋ค์ํ ๋์์ธ ํจํด์ ์ดํดํ๊ณ ์ ์ฉํ ์ ์์ด์ผ ํ์ต๋๋ค.
์คํ๋ง ํ๋ ์์ํฌ๋ ํ๋ฒํ POJO๋ฅผ ์ฌ์ฉํ๋ฉด์๋ EJB์์๋ง ๊ฐ๋ฅํ๋ ์ ์ ์ง์ํฉ๋๋ค. ๋ฐ๋ผ์ EJB๋ณด๋ค ํจ์ฌ ๊ฐ๋จํ์ฃ . ๋์์ธ ํจํด ๋ํ ์ ๊ฒฝ ์ธ ํ์๊ฐ ์์ต๋๋ค. ์๋ํ๋ฉด ์คํ๋ง ํ๋ ์์ํฌ์๋ ์ด๋ฏธ ๋ง์ ๋์์ธ ํจํด๋ค์ด ์ ์ฉ๋์ด ๋ฐฐํฌ๋๋ฏ๋ก ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ์์ฒด๊ฐ ๋์์ธ ํจํด์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ผ ํ ์ ์์ต๋๋ค.
*POJO
POJO๋ ๋ง ๊ทธ๋๋ก ํ๋ฒํ ์๋ ์๋ฐ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ๋ค. ๋ํ์ ์ธ Not POJO ํด๋์ค๊ฐ Servlet ํด๋์ค์ด๋ค. Servlet ํด๋์ค๋ ์ฐ๋ฆฌ ๋ง์๋๋ก ๋ง๋ค ์ ์์ผ๋ฉฐ, ๋ฐ๋์ Servlet์์ ์๊ตฌํ๋ ๊ท์น์ ๋ง๊ฒ ํด๋์ค๋ฅผ ๋ง๋ค์ด์ผ ์คํํ ์ ์๋ค.
์คํ๋ง ํ๋ ์์ํฌ์ ํน์ง
์คํ๋ง์ ํน์ง์ ํ ์ค๋ก ์์ ํ๋ฉด, "IoC์ AOP๋ฅผ ์ง์ํ๋ ๊ฒฝ๋์ ์ปจํ ์ด๋ ํ๋ ์์ํฌ"๋ก ํํํ ์ ์์ต๋๋ค.
(1) ๊ฒฝ๋
์คํ๋ง์ ํฌ๊ธฐ ์ธก๋ฉด์์ ๊ฐ๋ณ์ต๋๋ค. ์คํ๋ง์ ์ฌ๋ฌ ๊ฐ์ ๋ชจ๋๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ๊ฐ ๋ชจ๋์ ํ๋ ์ด์์ JAR ํ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ์คํ๋ง์ ์ด์ฉํ์ฌ ๋ง๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌ ์ญ์ ๋งค์ฐ ๋น ๋ฅด๊ณ ์ฝ์ต๋๋ค. ์คํ๋ง ํ๋ ์์ํฌ๋ POJO ํํ์ ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ํน๋ณํ ๊ท์น์ด ์๋ ๋จ์ํ๊ณ ๊ฐ๋ฒผ์ด ๊ฐ์ฒด์ด๋ฏ๋ก ๊ธฐ์กด์ EJB ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๊ฐ๋ณ๊ณ ๋น ๋ฅผ ์ ๋ฐ์ ์์ต๋๋ค.
(2) ์ ์ด์ ์ญํ(IoC)
์คํ๋ง์ ์ ์ด์ ์ญํ์ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ๋ ๊ฐ์ฒด ๊ฐ์ ๋์จํ ๊ฒฐํฉ, ์ฆ ๋ฎ์ ๊ฒฐํฉ๋๋ฅผ ์ ์งํฉ๋๋ค. IoC๊ฐ ์ ์ฉ๋๋ฉด ๊ฐ์ฒด ์์ฑ์ ์๋ฐ ์ฝ๋๋ก ์ง์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด์๋๋ผ ์ปจํ ์ด๋๊ฐ ๋์ ์ฒ๋ฆฌํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์์ค์ ์์กด๊ด๊ณ๊ฐ ๋ช ์๋์ง ์์ผ๋ฏ๋ก ์ ์ง๋ณด์๊ฐ ๊ต์ฅํ ํธ๋ฆฌํด์ง๋๋ค.
(3) ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ(AOP)
๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋น์ฆ๋์ค ๋ฉ์๋๋ฅผ ๊ฐ๋ฐํ ๋, ํต์ฌ ๋น์ง๋์ค ๋ก์ง๊ณผ ๊ฐ ๋น์ง๋์ค ๋ฉ์๋๋ง๋ค ๋ฐ๋ณตํด์ ๋ฑ์ฅํ๋ ๊ณตํต ๋ก์ง์ ๋ถ๋ฆฌํจ์ผ๋ก์จ ์์ง๋๊ฐ ๋๊ฒ ๊ฐ๋ฐํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ๊ณตํต์ผ๋ก ์ฌ์ฉํ๋ ๊ธฐ๋ฅ๋ค์ ์ธ๋ถ์ ๋ ๋ฆฝ๋ ํด๋์ค๋ก ๋ถ๋ฆฌํ๊ณ , ํด๋น ๊ธฐ๋ฅ์ ํ๋ก๊ทธ๋จ ์ฝ๋์ ๋ช ์ํ์ง ์๊ณ ์ ์ธ์ ์ผ๋ก ์ฒ๋ฆฌํ์ฌ ์ ์ฉํ๋ ๊ฒ์ด ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ๋๋ค. ์ด๋ ๊ฒ ๋๋ฉด ๊ณตํต ๊ธฐ๋ฅ์ ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌํ ์ ์์ผ๋ฏ๋ก ์์ง๋๊ฐ ๋์ ๋น์ฆ๋์ค ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค ์ ์์ ๋ฟ๋ง ์๋๋ผ ์ ์ง๋ณด์๋ฅผ ํ์ ์ ์ผ๋ก ํฅ์์ํฌ ์ ์์ต๋๋ค.
(4) ์ปจํ ์ด๋
์ปจํ ์ด๋๋ ํน์ ๊ฐ์ฒด์ ์์ฑ๊ณผ ๊ด๋ฆฌ๋ฅผ ๋ด๋นํ๋ฉฐ ๊ฐ์ฒด ์ด์ฉ์ ํ์ํ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ปจํ ์ด๋๋ ์ผ๋ฐ์ ์ผ๋ก ์๋ฒ ์์ ํฌํจ๋์ด ๋ฐฐํฌ ๋ฐ ๊ตฌ๋์ด ๋ฉ๋๋ค. ๋ํ์ ์ธ ์ปจํ ์ด๋๋ก๋ Servlet ์ปจํ ์ด๋์ EJB ์ปจํ ์ด๋๊ฐ ์์ผ๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์ ์ด์ฉ์ ํ์ํ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๊ฐ์ฒด ๊ฐ์ ์์กด๊ด๊ณ๋ฅผ ๊ด๋ฆฌํ๋ค๋ ์ ์์ ์คํ๋ง๋ ์ผ์ข ์ ์ปจํ ์ด๋๋ผ๊ณ ํ ์ ์์ต๋๋ค.
Reference
SPRING QUICK START, ์ฑ๊ทํ, ๋ฃจ๋นํ์ดํผ