<๊ฐ์>
Beans๊ฐ ๋ฌด์์ธ์ง ์์๋ณธ๋ค.
Application Context๊ฐ ๋ฌด์์ธ์ง ์ด๋ป๊ฒ ๋์๊ฐ๋์ง ๊ทธ ์๋ฆฌ, ์ข ๋ฅ์ ๋ํด์๋ ์์๋ณธ๋ค.
1. Beans๋?
(1) Beans์ ์ญ์ฌ
์ฒ์์ Java์ ๊ฐ๋ฐ์ง์ธ SUNS์์ JavaBeans๋ฅผ ๋ฐํํ๋ค. JavaBeans๋ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ ์ปดํฌ๋ํธ๋ฅผ ๋งํ๋ค. Beans๋ Client ์ธก๋ฉด (Front-end), ์๋ฒ ์ธก๋ฉด (Back-end) ๊ฐ๊ฐ ๋๋์ด์ ์ฐ์๋ค. ์๋ ๊ฐ๋ฐ์ง๋ค์ Beans๊ฐ Client GUI์์ ๋ง์ด ์ฌ์ฉ๋๊ธธ ๋ฐ๋ฌ๋ค. ์๋ฅผ ๋ค์ด ๊ฒ์์ฐฝ์ ๋๊ฐ ๋ง๋ค์ด ๋์ผ๋ฉด ๋๊ตฐ๊ฐ ๊ทธ๊ฒ์ ์ฌ์ฌ์ฉํ๋๋ก ํ๋ ๊ฒ์ด๋ค. ๊ทผ๋ฐ Clinet GUI ํํธ์์์ Beans๋ ๋ด์ฉ์ด ๋๋ฌด ๋ณต์กํด์, ์ฌ๋๋ค์ด ์๋ฌด๋ ์ฐ์ง ์์ ๋งํ๋ค.
๋๋ ค ์๋ฒ ์ธก๋ฉด์์ Beans๊ฐ ๊ฐ๊ด๋ฐ์๋ค. ๊พธ๋ฐ์ด ํ์์๋ Back-end Part์์๋ Beans์ ๋ด์ฉ์ด ๋จ์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋์ ๋ค์ SUNS์์ JavaBeans๋ฅผ ์ ๊ทธ๋ ์ด๋ ํด์ ๋ง๋ ๊ฒ์ด EJB Beans์ด๋ค. ์ด๊ฒ์ ๋งค์ฐ ๋ณต์กํ๋ค. ๊ทธ๋์ ์ฌ๋๋ค์ด ์๋ก์ด ํธ๋ ๋๋ผ ์ฐ๊ธด ์ผ์ง๋ง ๋ง์ด๋ค ๋ถํํ๋ค.
ํด๋น EJB ์ ๋ณต์ก์ฑ์ ์์ ๊ณ , ์์ JavaBeans์ฒ๋ผ ๊ฐํธํ Beans ์ฒด์ ๋ฅผ ๋ง๋ค๊ณ ์ถ์๋ ๋ก๋ ์กด์จ์ด๋ผ๋ ์ฌ๋์ด Spring Beans๋ฅผ ๊ฐ๋ฐํ๋ค. ์์๋ ๋ค๋ค ์ด๊ฑฐ ์ด๋ค.
Spring Beans์์ Beans๋ Spring Container๊ฐ ๊ด๋ฆฌํ๋ค. Spring Container๋ Application Context์ ๊ฑฐ์ ๋์ผ์ด์ด๋ค.
(2) Beans๋? Beans์ Application Context์ ๊ด๊ณ
Beans๋ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ ์ปดํฌ๋ํธ์ด๋ค.
์ฐ๋ฆฌ๊ฐ ์์์ ๋ฐฐ์ ๋ฏ์ด ๊ฐ์ฒด๋ฅผ ํ์ํ ๋๋ง๋ค ๋์ ํ ๋น์ ๋ฐ์์ ์ ์ธํ ํ์ ์์ด ์ด๋ฏธ, Application Context์ ๋ง๋ค์ด์ง ์ฑ๋ก ์ ์ฅ๋ ๊ฐ์ฒด๋ค์ ๊ฐ์ ธ์ ์ฌ์ฉํ๋ค. ํด๋น ๊ฐ์ฒด๋ค์ Beans๋ผ๊ณ ๋ณผ ์์๋ค.
Beans๊ฐ ๋์๊ฐ๋ ์๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ๋ค.
a. ๋จผ์ XML ์ค์ ํ์ผ์ <Bean/> ํ๊ทธ๋ก Bean์ ๋ํ ์ ์๋ค์ด ์ ํ์๋ค.
b. Application Context๊ฐ ํด๋น ์ ์๋ค์ ์ฝ์ด๋ค์ฌ์ <"๊ฐ์ฒด์ด๋ฆ", ๊ฐ์ฒด๊ฐ ์ ์ฅ๋ ์ฃผ์> ๋ก ๊ฐ์ฒด ์ ์ฅ์๋ฅผ ์์ ๋ง๋ค์ด์ ์ ์ฅํ๋ค.
c. ์์ค์ฝ๋ ๋ด๋ถ์์ ๊ฐ์ฒด ์์ฑ์ด๋, ์ฐ๊ฒฐ ์์ฒญ์ด ๋ค์ด์ค๋ฉด Application Context๊ฐ ํด๋น ์ฅ๋ถ๋ฅผ ๋ค์ ธ์ ๊ทธ์ ๋ง๋ ๊ฐ์ฒด๋ฅผ ์ ํด์ฃผ๊ฑฐ๋, ๊ฐ์ฒด๋ค ๊ฐ์ ๊ด๊ณ๋ฅผ ์ฐ๊ฒฐ ์์ผ์ค๋ค.
2. Application Context
(1)Application Context์ ์ ์
๋จผ์ BeanFactory์ ๋ํด์ ์์๋ณด๊ฒ ๋ค. ์ด๋ฆ ๊ทธ๋๋ก Bean์ ์์ฑํ๊ณ ์๋ฉธํ๋ ๊ธฐ๋ฅ์ ๋ด๋นํ๋ ๋ ์์ด๋ค.
Application Context ์ค์ฌ์ AC๋ ํด๋น BeanFactory๋ฅผ ๋ด๋ถ์ ๊ฐ์ง๋ฉฐ, ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ๋ ๊ฐ์ง๋ค. (๊ฐ์ฒด์ ์ฅ์(๋ช ๋จ), ๊ฐ์ฒด๋ค๊ฐ์ ๊ด๊ณ ์ฐ๊ฒฐํ๋ ๊ธฐ๋ฅ ๋ฑ)
AC๋ค์ ์์ ๊ฐ์ด ๊ฐ์ฒด๋ค์ ์ ์ฅํ๊ณ ์๋๋ฐ, ํน์ ์์ฒญ์ฌํญ์ ํด๊ฒฐํ ์ ์๋ ๊ฐ์ฒด๊ฐ ์๊ธฐ ๋ด๋ถ์ ์์ ๋๋ ์๊ธฐ ๋ถ๋ชจ AC์๊ฒ ํด๋น ๋ฌธ์ ๋ฅผ ๋๊ธด๋ค. ๊ทธ๋ฌ๋ฉด ๋ถ๋ชจAC์์ ํด๋น ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ฐ์ฒด๊ฐ ์๋์ง ์ฐพ์๋ณด๊ฒ ๋๋ค.
๋ฐ๋ผ์ ๋ถ๋ชจ AC์์๋ ์์ AC์์ ๊ณตํต์ ์ผ๋ก ์ฐ์ด๋ ๊ฐ์ฒด๊ฐ ์ฃผ๋ก ์ ์ฅ๋์ด ์๊ณ , ์์ AC๋ค์๋ ์์ ๊ณ ์ ์ ๊ฐ๋ณ์ ์ธ ๊ฐ์ฒด๋ค์ด ์ ์ฅ๋์ด ์๋ค.
(2)AC์ ์ข ๋ฅ
AC์ ์ข ๋ฅ๋ Beans ์ ์๊ฐ ๋ค์ด์๋ ํ์ผ์ด XML ์ค์ ํ์ผ์ด๋ ์๋๋ฉด ์๋ฐ์ฝ๋๋ก ์ ์ธ JavaConfig์ด๋์ ๋ฐ๋ผ์ ์ผ๋จ ๋๋๋ค. ๊ทธ๋ฆฌ๊ณ Web ๋ง๋ค๊ธฐ ์ฉ์ด๋ ์๋๋์ ๋ฐ๋ผ ํ๋ฒ ๋ ๋๋๋ค.
AC ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์์ ์ ์ฉ๋์ ๊ธฐํธ์ ๋ฐ๋ผ ๋ง๋ AC๋ฅผ ์์ฑํ๋ฉด ๋๊ฒ ๋ค.
(3)์์ค์ฝ๋ ๋ฏ์ด๋ณด๊ธฐ
Root AC๋ ๋ชจ๋ AC๋ค์ ์กฐ์์ธ๋ฐ, ํด๋น ๊ฐ์ฒด๋ ContextLoaderListener๊ฐ ๋ง๋ ๋ค.
๋ง๋ค ๋ ์ฐธ์กฐํ๋ xml ํ์ผ์ด ๋ฐ๋ก root-context ํ์ผ์ธ ๊ฒ์ด๋ค.
DispatcherServlet๋ ๊ณ ์ ์ AC๋ฅผ ๊ฐ์ง๋ค.
ํด๋น AC๋ servlet-context.xml์ด๋ผ๋ ์ค์ ํ์ผ์ ํตํด ๋ง๋ค์ด์ง๋ค.
์ ๋ชจ๋ ์ฌํญ์ Web.xml์ ์ ํ์๋ค.
Root-AC๋ ๋ชจ๋ AC๋ค์ ์กฐ์์ด๋ฏ๋ก, ์์ AC๋ค์ Root-AC์ ๋ด์ฉ์ ์ฐธ์กฐํ ์ ์๋ค.
๊ทธ๋์ Root-AC์๋ ๋ชจ๋ Servlet AC๋ค์ด ์ฌ์ฉํ๋ ๊ณตํต์ ์ธ Bean ๋ค์ด ๋ฑ๋ก ๋์ด์๋ค.
๋ฐ๋๋ก Root-AC๋ ์์๋ค์ ์ฐธ์กฐํ ์ ์๋ค.
Servlet AC๋ ํด๋น AC์ ์ฐ๊ฒฐ๋ Servlet๋ง ์ธ ์ ์๋ค.
๊ทธ๋์ ํด๋น Servlet๋ง์ด ์จ์ผํ๋ Bean๋ค์ด ์ ํ์๋ค.
(4)AC๋ค๊ฐ์ ๊ด๊ณ
context๋ ์๋ธ๋ฆฟ์ ์ ์ฅํ๊ณ ์๋ ์ ์ฅ์ (์๋งน์ด)
Application Context๋ context์ , context์ ๋ํ ์ ๋ณด(๋ฉํ๋ฐ์ดํฐ)๋ฅผ ํฌํจํ๊ณ ์์.
Applicatipn Context Pasade๋ AC๋ฅผ ๊ฐ์ธ๊ณ ์์.