ย ์ ๋ฒ์ฃผ๊น์ง ์ ๋ Servlet๊ณต๋ถ๋ฅผ ํ๋ฉฐ, ์น ๊ฐ๋ฐ์ ๊ธฐ์ด๋ฅผ ๋ค์ ธ๋ณด์์ต๋๋ค.
ย ์ด๋ฒ์ฃผ ๋ถํฐ๋ ๊ณต๋ถํ ๋ด์ฉ๋ค์ ์ ๋ฆฌํ๋ฉฐ Spring Framework
๋ฅผ ์ฌ์ฉํ์ฌ MVC ํจํด
์ ๊ตฌํ ๋ฐ ์ต์ ํ ์์ผ๋ณด๋ฉฐ ๊ณต๋ถ๋ฅผ ์งํํด ๋ณผ ์์ ์
๋๋ค.
ย ์ค๋์ ๊ฐ๋จํ Spring Framework๊ฐ ๋ฌด์์ด๋ฉฐ, MVC ํจํด์ ์ด๋ค ๊ฒ์ธ์ง์ ๋ํด์ ๊ฐ๋ตํ ์ ๋ฆฌํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
ย ๊ทธ๋ผ ์์ํด ๋ณด๊ฒ ์ต๋๋ค.
ย Spring์ Java ์ํฐํ๋ผ์ด์ฆ ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ฌ์ฉ๋๋ ์ดํ๋ฆฌ์ผ์ด์ Framework ์ ๋๋ค.
ย ์ดํ๋ฆฌ์ผ์ด์ Framework๋ ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ํ ์ ์๋๋ก ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฐํ์ด ๋๋ ํ๊ณผ ๊ณตํต ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ, ๊ธฐ์ API ๋ฑ์ ์ ๊ณตํด ์ค๋๋ค.
ย Spring ์ปจํ ์ด๋๋ ์ค์ ์ ๋ณด๋ฅผ ์ฐธ๊ณ ๋ก ํด์ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ๋ ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํฉ๋๋ค. Spring ์ปจํ ์ด๋๋ ๋ ๋ฆฝ์ ์ผ๋ก ๋์ํ ์๋ ์์ง๋ง ๋ณดํต ์น ๋ชจ๋์์ ๋์ํ๋ ์๋น์ค๋ ์๋ธ๋ฆฟ์ผ๋ก ๋ฑ๋กํด์ ์ฌ์ฉํฉ๋๋ค.
ย Spring์ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์ Spring ์ปจํ ์ด๋๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ๊ณผ Spring ์ปจํ ์ด๋๊ฐ ์ดํ๋ฆฌ์ผ์ด์ ์ค๋ธ์ ํธ๋ฅผ ์ด์ฉํ ์ ์๋๋ก ์ค์ ์ ๋ณด๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ์์์ผ ํฉ๋๋ค.
ย Framework๋ ์ดํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ฑํ๋ ์ค๋ธ์ ํธ๊ฐ ์์ฑ๋๊ณ ๋์ํ๋ ๋ฐฉ์์ ๋ํ ํ์ ์ ๊ณตํด์ค ๋ฟ๋ง ์๋๋ผ, ์ดํ๋ฆฌ์ผ์ด์
์ฝ๋๊ฐ ์ด๋ป๊ฒ ์์ฑ๋์ด์ผ ํ๋์ง์ ๋ํ ๊ธฐ์ค๋ ์ ์ํด์ค๋๋ค.
์ด๋ฐ ํ์ ๋ณดํต ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ด๋ผ๊ณ ํฉ๋๋ค. Spring์ ์ธ ๊ฐ์ง ํต์ฌ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ง์ํฉ๋๋ค.
ย ์ฒซ ๋ฒ์งธ๋ Ioc/DI
๋ผ๊ณ ๋ถ๋ฆฌ๋ ์ค๋ธ์ ํธ์ ์๋ช
์ฃผ๊ธฐ์ ์์กด๊ด๊ณ์ ๋ํ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์
๋๋ค.
ย Spring์ ์ ์ฐํ๊ณ ํ์ฅ์ฑ์ด ๋ฐ์ด๋ ์ฝ๋๋ฅผ ๋ง๋ค ์ ์๊ฒ ๋์์ฃผ๋ ๊ฐ์ฒด์งํฅ ์ค๊ณ ์์น๊ณผ ๋์์ธ ํจํด์ ํต์ฌ ์๋ฆฌ๋ฅผ ๋ด๊ณ ์๋ IoC/DI๋ฅผ Framework์ ๊ทผ๊ฐ์ผ๋ก ์ผ๊ณ ์์ต๋๋ค.
ย Spring Framework์์ ๋์ํ๋ ์ฝ๋๋ IoC/DI ๋ฐฉ์์ ๋ฐ๋ผ์ ์์ฑ๋์ด์ผ Spring์ด ์ ๊ณตํ๋ ๊ฐ์น๋ฅผ ์ ๋๋ก ๋๋ฆด ์ ์์ต๋๋ค.
ย Spring์ด ์ง์ ์ ๊ณตํ๋ ๋ชจ๋ ๊ธฐ์ ๊ณผ API, ์ฌ์ง์ด ์ปจํ ์ด๋๋ IoC/DI ๋ฐฉ์์ผ๋ก ์์ฑ๋์ด ์์ต๋๋ค.
ย Spring์ ๋ฐ๋ฅด๊ฒ ์ดํดํ๊ณ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐ ๊ธฐ๋ณธ์ด ๋๋ฉฐ ๊ฐ์ฅ ์ค์ํ ๊ธฐ์ ์ ๋๋ค.
ย ๋ ๋ฒ์งธ๋ ์๋น์ค ์ถ์ํ
์
๋๋ค. Spring์ ์ฌ์ฉํ๋ฉด ํ๊ฒฝ์ด๋ ์๋ฒ, ํน์ ๊ธฐ์ ์ ์ข
์๋์ง ์๊ณ ์ด์์ฑ์ด ๋ฐ์ด๋๋ฉฐ, ์ ์ฐํ ์ดํ๋ฆฌ์ผ์ด์
์ ๋ง๋ค ์ ์๋๋ฐ, ์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ๊ฒ์ด ๋ฐ๋ก ์๋น์ค ์ถ์ํ์
๋๋ค.
ย ๊ตฌ์ฒด์ ์ธ ๊ธฐ์ ๊ณผ ํ๊ฒฝ์ ์ข ์๋์ง ์๋๋ก ์ ์ฐํ ์ถ์ ๊ณ์ธต์ ๋๋ ๋ฐฉ๋ฒ์ด๋ผ ํ ์ ์๊ฒ ์ต๋๋ค.
ย ์ธ ๋ฒ์งธ๋ AOP
์
๋๋ค. AOP๋ ์ดํ๋ฆฌ์ผ์ด์
์ฝ๋์ ์ฐ์ฌํด์ ๋ํ๋๋ ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ๋
๋ฆฝ์ ์ผ๋ก ๋ชจ๋ํํ๋ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์
๋๋ค.
ย Spring์ AOP๋ฅผ ์ด์ฉํด์, ๋ค์ํ ์ํฐํ๋ผ์ด์ฆ ์๋น์ค๋ฅผ ์ ์ฉํ๊ณ ๋ ๊น๋ํ ์ฝ๋๋ฅผ ์ ์งํ ์ ์๊ฒ ํด์ค๋๋ค.
ย Spring์ ์ฌ์ฉํด์ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ ๊ฐ๋ฐ์๋ผ๋ฉด ๋ฐ๋์ ์ด ์ธ ๊ฐ์ง ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ ์ดํดํด์ผ ํ๊ณ ์์ ๋กญ๊ฒ ์์ฉํ ์ ์์ด์ผ ํฉ๋๋ค.
ย Spring์ ์ํฐํ๋ผ์ด์ฆ ์ดํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐ์ ๋ค์ํ ์์ญ์ ๋ฐ๋ก ํ์ฉํ ์ ์๋ ๋ฐฉ๋ํ ์์ ๊ธฐ์ API
๋ฅผ ์ ๊ณตํฉ๋๋ค.
ย UI ์์ฑ์ ๋ฌผ๋ก ์ด๊ณ ์น ํ๋ ์ ํ ์ด์ ๊ณ์ธต, ๋น์ฆ๋์ค ์๋น์ค ๊ณ์ธต, ๊ธฐ๋ฐ ์๋น์ค ๊ณ์ธต, ๋๋ฉ์ธ ๊ณ์ธต, ๋ฐ์ดํฐ ์์ธ์ค ๊ณ์ธต ๋ฑ์์ ํ์ํ ์ฃผ์ ๊ธฐ์ ์ Spring์์ ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ ์ ์๋๋ก ์ง์ํด์ฃผ๋ ๊ธฐ๋ฅ๊ณผ ์ ๋ต ํด๋์ค ๋ฑ์ ์ ๊ณตํฉ๋๋ค.
ย Spring์ด ์ ๊ณตํ๋ API์ ์ง์ ๊ธฐ์ ์ ๋ชจ๋ Spring์ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ๋ฐ๋ผ ์์ฑ๋์ด ์์ผ๋ฏ๋ก, ์ด๋ฅผ ๊ฐ์ ธ๋ค ์ฐ๋ ๊ฒ๋ง์ผ๋ก๋ Spring์ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ฝ๋์ ์์ฐ์ค๋ฝ๊ฒ ์ ์ฉํ ์ ์์ต๋๋ค.
ย Spring์ ๋ชจ๋ ๊ธฐ์ ์ ํ์ค Java ์ํฐํ๋ผ์ด์ฆ ํ๋ซํผ (JavaEE) ์ ๊ธฐ๋ฐ์ ๋๊ณ ์์ต๋๋ค.
ย ํ์ค ๊ธฐ์ ๊ณผ ๋๋ถ์ด ์ ๋ช ์คํ์์ค ๊ธฐ์ ๊ณผ ์ฃผ์ ์์ฉ ๊ธฐ์ ์ ๋ํ ์ง์ ๊ธฐ๋ฅ๋ ๋ค์ํ๊ฒ ์ ๊ณต๋ฉ๋๋ค.
ย Spring์ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ๋ฐ๋ก ์ด ์ธ ๊ฐ์ง ์์๋ฅผ ์ ๊ทน์ ์ผ๋ก ํ์ฉํด์ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ค๋ ๋ป์ ๋๋ค.
ยํด๋์ค
๋ Spring ์ปจํ ์ด๋ ์์์ ์ค๋ธ์ ํธ๋ก ๋ง๋ค์ด์ ธ ๋์ํ๊ฒ ๋ง๋ค๊ณ ,์ฝ๋
๋ Spring์ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ๋ฐ๋ผ์ ์์ฑํ๊ณ ,์ํฐํ๋ผ์ด์ฆ ๊ธฐ์
์ ์ฌ์ฉํ ๋๋ Spring์ด ์ ๊ณตํ๋ ๊ธฐ์ API์ ์๋น์ค๋ฅผ ํ์ฉํ๋๋ก ํด์ฃผ๋ฉด ๋ฉ๋๋ค.
ย ๋ชจ๋ธ-๋ทฐ-์ปจํธ๋กค๋ฌ(model-view-controller, MVC)๋ ์ํํธ์จ์ด ๊ณตํ์์ ์ฌ์ฉ๋๋ ์ํํธ์จ์ด ๋์์ธ ํจํด์ ๋๋ค.
ย ์ด ํจํด์ ์ฑ๊ณต์ ์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด, ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ก๋ถํฐ ๋น์ฆ๋์ค ๋ก์ง์ ๋ถ๋ฆฌํ์ฌ ์ดํ๋ฆฌ์ผ์ด์ ์ ์๊ฐ์ ์์๋ ๊ทธ ์ด๋ฉด์์ ์คํ๋๋ ๋น์ฆ๋์ค ๋ก์ง์ ์๋ก ์ํฅ ์์ด ์ฝ๊ฒ ๊ณ ์น ์ ์๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค.
ย ๋ชจ๋ธ-๋ทฐ-์ปจํธ๋กค๋ฌ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ธ ๊ฐ์ง์ ๊ตฌ์ฑ์์๋ก ๋๋๋๋ค. ๊ฐ๊ฐ์ ๊ตฌ์ฑ์์๋ค ์ฌ์ด์๋ ๋ค์๊ณผ ๊ฐ์ ๊ด๊ณ๊ฐ ์์ต๋๋ค.
ย ๋ชจ๋ธ(model)
์ด๋ ์ด๋ ํ ๋์์ ์ํํ๋ ์ฝ๋๋ฅผ ๋งํ๋ฉฐ, ํ์ ํ์์ ์์กดํ์ง ์์ต๋๋ค.
ย ๋ค์๋งํด, ์ฌ์ฉ์์๊ฒ ์ด๋ป๊ฒ ๋ณด์ผ์ง์ ๋ํด ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ค๋ ๋ป์ ๋๋ค.
ย ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ธ์ ์์ํ๊ฒ public ํจ์๋ก๋ง ์ด๋ฃจ์ด์ง๋๋ค.
ย ๋ํ ๋ช๋ช ํจ์๋ค์ ์ฌ์ฉ์์ ์ง์(query)์ ๋ํด ์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ณ ๋๋จธ์ง ํจ์๋ค์ ์ํ๋ฅผ ์์ ํฉ๋๋ค.
ย MVC์์ ๋ชจ๋ธ์ ์ฌ๋ฌ ๊ฐ์ ๋ทฐ(view)๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
ย ๋ทฐ๋ ๋ณด์ฌ์ค ๊ฐ(๋ชจ๋ธ)์ ์ปจํธ๋กค๋ฌ๋ก๋ถํฐ ๋ฐ์์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค๋๋ค.
ย MVC์ ๋ทฐ๋ ์ฌ๋ฌ ๊ฐ์ ์ปจํธ๋กค๋ฌ(controller)๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
ย ์ฌ์ฉ์๋ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ์ ์ํ๋ฅผ ๋ฐ๊ฟ๋๋ค.
ย ์ปจํธ๋กค๋ฌ๋ ๋ชจ๋ธ์ mutator(๋ชจ๋ธ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ํจ์)๋ฅผ ํธ์ถํ์ฌ ์ํ๋ฅผ ๋ฐ๊ฟ๋๋ค.
ย ์ด๋ ๋ชจ๋ธ์ ์ํ๊ฐ ๋ฐ๋๋ฉด ๋ชจ๋ธ์ ๋ฑ๋ก๋ ๋ทฐ์ ์์ ์ ์ํ๊ฐ ๋ฐ๋์๋ค๋ ๊ฒ์ ์๋ฆฌ๊ณ ๋ทฐ๋ ๊ฑฐ๊ธฐ์ ๋ง๊ฒ ์ฌ์ฉ์์๊ฒ ๋ชจ๋ธ์ ์ํ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
ย Java ์ธ์ด์์ ๋ชจ๋ธ์
java.util.Observable
์ ์์(extends)๋ฐ์ ๋ง๋ค ์ ์์ต๋๋ค.
๋ชจ๋ธ์๋ ํ์ฌ์ ์ํ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ๋ค๋ฅธ ํด๋์ค์๊ฒ ์๋ฆด ์ ์๋ ํจ์๊ฐ ์์ด์ผ ํฉ๋๋ค.
ย mutator๋ setChanged() ์ notifyObservers()๋ฅผ ํธ์ถํด์ผ ํฉ๋๋ค.
ย notifyObservers๋ ๋ชจ๋ธ์ ๋ฑ๋ก๋ ๋ชจ๋ ๋ทฐ์๊ฒ ์ ๋ฐ์ดํธ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ฒ ๋ฉ๋๋ค.
ย ๋ทฐ๋java.util.Observer
๋ฅผ implementํ์ฌ ๋ง๋ค๋ฉด update method๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
ย updateํจ์์ ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ Object ๋ชจ๋ธ์์ ๋์ด์จ ์ถ๊ฐ์ ๋ณด๋ฅผ ๋ฐ๋ ๋ฐ์ ์ฌ์ฉ๋ฉ๋๋ค.
interface Observer {
void update(Observable t, Object o);
}
ย ๋ทฐ๋ ๋ฐ๋์ ๋ชจ๋ธ์๊ฒ ์ง์ํ์ฌ ์ ๋ฐ์ดํธํ๋ ๋ถ๋ถ์ด ๊ตฌํ๋์ด์ผ ํฉ๋๋ค.
ย ๋ชจ๋ธ์ addObserver๋ผ๋ ํจ์๋ฅผ ์ด์ฉํ์ฌ ๋ทฐ๋ฅผ ์์ ์๊ฒ ๋ฑ๋ก์ํต๋๋ค.
ย ๋ชจ๋ธ์ ์์ ์๊ฒ ๋ฑ๋ก๋ ๋ชจ๋ ๋ทฐ๋ฅผ ๊ธฐ์ตํ๊ณ ์๋ค๊ฐ ์์ ์ ์ํ๊ฐ ๋ฐ๋๊ฒ ๋๋ฉด ๋ฑ๋ก๋ ๋ชจ๋ ๋ทฐ์ notify ํจ์๋ฅผ ํธ์ถํ์ฌ ๋ทฐ๋ฅผ update์ํต๋๋ค.
ย ๋ชจ๋ธ์ ๋ทฐ๋ฅผ ์ฌ๋ฌ๊ฐ ๊ฐ์ง ์ ์์ต๋๋ค. MVC์์๋ ์ด๊ฒ์ ํ์ฉํ๊ณ ์์ผ๋ฉฐ, ๋ํ ๋ทฐ๋ ์ฌ๋ฌ๊ฐ์ ๋ชจ๋ธ์ ๋ฑ๋ก๋ ์ ์์ต๋๋ค.
1)
์์ ๋ฐ์ request๊ฐ ์ด๋ค ์ปจํธ๋กค๋ฌ๋ฅผ ์ฌ์ฉํ๋์ง ์๋ตํด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.2)
์์ DispatcherServlet์ ๋ก์ง์ ์ฒ๋ฆฌํ ์ปจํธ๋กค๋ฌ๋ฅผ ์๋ต ๋ฐ์์ต๋๋ค. ๋ฐ๋ผ์ ํด๋น Controller
๋ก ์ฒ๋ฆฌ ์์ฒญ์ ๋๊ธฐ๊ฒ ๋ฉ๋๋ค. ์ด๋ ํด๋น ์ปจํธ๋กค๋ฌ๋ ๋ก์ง์ ์ํํ๊ณ ์๋น์ค๋ฅผ ์์ฒญํ๋ฉฐ Model์ ๋ง๋ค๊ฒ ๋๋๋ฐ, ์ด Model์ด ModelAndView
๊ฐ์ฒด์ ๋ด๊ฒจ์ ธ์ ๋ค์ DispatcherServlet ์ผ๋ก ๋์ด๊ฐ๊ฒ ๋ฉ๋๋ค. Model์ ๋ง๋ค์ด DispatcherServlet์ผ๋ก ๋๊ฒจ์ฃผ๋๊ฒ์ด ๋ฐ๋ก Controller์ ์ญํ ์
๋๋ค.3)
์์ ModelAndView ๊ฐ์ฒด๋ฅผ ๋ฐ์์ต๋๋ค. ์ด๋ ๋ฐ์ ModelAndView ๊ฐ์ฒด์ ๋ง๋ View๋ฅผ ์ฐพ์๋ฌ๋ผ๊ณ DispatcherServlet์ ViewResolver
์๊ฒ ์์ฒญ์ ํ๊ฒ ๋ฉ๋๋ค. ViewResolver์ ์ญํ ์ ์์ฒญ๋ฐ์ View๋ฅผ ์ฐพ์์ฃผ๋ ๊ฒ์
๋๋ค.4)
์์ ViewResolver๋ ModelAndView์ ๋ง๋ View์ ๋ณด๋ฅผ ๋๊ฒจ์ฃผ์์ต๋๋ค. ์ด์ ๋ฐ์ ์ ๋ณด๋ก DispatcherServlet์๊ฒ ํ์ํ View๋ฅผ ์ฐพ์ ํ Model๊ฐ์ ๋๊ฒจ์ View๋ฅผ ์ถ๋ ฅํด ์ค๋๋ค.01) ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ํ๋ฉด, front controller์ธ
DispatcherServlet
ํด๋์ค๊ฐ ์์ฒญ์ ๋ฐ์ต๋๋ค.
02)DispatcherServlet
์ ํ๋ก์ ํธ ํ์ผ ๋ด์servlet-context.xml
ํ์ผ์@Controller
์ธ์๋ฅผ ํตํด ๋ฑ๋กํ ์์ฒญ ์์ ์ปจํธ๋กค๋ฌ๋ก ๋งคํ(mapping)๋ ์ปจํธ๋กค๋ฌ๊ฐ ์กด์ฌํ๋ฉด,@RequestMapping
์ ํตํด ์์ฒญ ์ฒ๋ฆฌํ ๋ฉ์๋๋ก ์ด๋ํฉ๋๋ค.
03) ์ปจํธ๋กค๋ฌ๋ ํด๋น ์์ฒญ์ ์ฒ๋ฆฌํService
(์๋น์ค)๋ฅผ ๋ฐ์ ๋น์ฆ๋์ค ๋ก์ง์ ์๋น์ค์๊ฒ ์์ํฉ๋๋ค.
04)Service
๋ ์์ฒญ์ ํ์ํ ์์ ์ ์ํํ๊ณ , ์์ฒญ์ ๋ํดDB
์ ์ ๊ทผํด์ผ ํ๋ค๋ฉดDAO
์ ์์ฒญํ์ฌ ์ฒ๋ฆฌ๋ฅผ ์์ํฉ๋๋ค.
05)DAO
[1]๋DB
์ ๋ณด๋ฅผDTO
[2]๋ฅผ ํตํด ๋ฐ์ ์๋น์ค์๊ฒ ์ ๋ฌํฉ๋๋ค.
06) ์๋น์ค๋ ์ ๋ฌ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ปจํธ๋กค๋ฌ์๊ฒ ์ ๋ฌํฉ๋๋ค.
07) ์ปจํธ๋กค๋ฌ๋Model
(๋ชจ๋ธ) ๊ฐ์ฒด์๊ฒ ์์ฒญ์ ๋ง๋View
(๋ทฐ) ์ ๋ณด๋ฅผ ๋ด์DispatcherServlet
์๊ฒ ์ ์กํฉ๋๋ค.
08)DispatcherServlet
์ViewResolver
์๊ฒ ์ ๋ฌ๋ฐ์View
์ ๋ณด๋ฅผ ์ ๋ฌํฉ๋๋ค.
09)ViewResolver
๋ ์๋ตํView
์ ๋ํ JSP๋ฅผ ์ฐพ์DispatcherServlet
์๊ฒ ์ ๋ฌํฉ๋๋ค.
10)DispatcherServlet
์ ์๋ตํ ๋ทฐ์Render
๋ฅผ ์ง์ํ๊ณ ๋ทฐ๋ ๋ก์ง์ ์ฒ๋ฆฌํฉ๋๋ค.
11)DispatcherServlet
์ ํด๋ผ์ด์ธํธ์๊ฒRendering
๋ ๋ทฐ๋ฅผ ์๋ตํ๋ฉฐ ์์ฒญ์ ๋ฏธ๋ฃน๋๋ค.
[1] DAO(Data Access Object) : DB๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ฑฐ๋ ์กฐ์ํ๋ ๊ธฐ๋ฅ์ ์ ๋ดํ๋๋ก ๋ง๋ ์ค๋ธ์ ํธ
[2] DTO(Data Transfer Object) : VO(Value Object)๋ก ๋ฐ๊พธ์ด ๋งํ ์ ์๋ค. ๊ณ์ธต๊ฐ ๋ฐ์ดํฐ ๊ตํ์ ์ํ ์ค๋ธ์ ํธ
ย ์ด๋ฒ ํฌ์คํ ์์๋ Spring Framework์ MVC ํจํด์ ๊ฐ๋ ์ ๋ํด์๋ง ๋๋ต์ ์ผ๋ก ๋ค๋ฃจ์ด ๋ณด์์ต๋๋ค.
ย ๋ค์ ํฌ์คํ ์์๋ ํ๊ฒฝ์ค์ ๊ณผ ์์ ์ฝ๋๋ฅผ ์คํํด ๋ณด๋ ํฌ์คํ ์ ํ ๋ฒ ํด๋ณด๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.