Spring MVC
MVC ํจํด Model2(Web MVC) ์์ฒญ ํ๋ฆ
์คํ๋ง MVC๋ ์์ ๊ฐ์ Model2 ๊ตฌ์กฐ์ MVC Architecture์ Front Controller Pattern์ ์ง์ํ๋ค.
Spring MVC ๊ตฌ์ฑ ์์ ๋ฐ ์คํ ์์
-
DispatcherServlet(Front Controller)
- ๋ชจ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ต์ด๋ก ์ ๋ฌ๋ฐ๋๋ค.
- ์์ฒญ์ ์์ ํ๊ณ ์ฒ๋ฆฌ๋ ๋ค๋ฅธ ์ปดํฌ๋ํธ์๊ฒ ์์ํ๋ค. ๋ํ ๋ค๋ฅธ ์ปดํฌ๋ํธ๊ฐ ๋ฐํํ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ์๋ต์ผ๋ก ๋ฐ์ ํ๋ค.
- Controller์๊ฒ ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ ๋ฌํ๊ณ , Controller๊ฐ ๋ฐํํ ๊ฐ์ View์๊ฒ ์ ๋ฌํ์ฌ ์์ฒญ์ ๋ฐ๋ฅธ ์๋ต์ ์์ฑํ๋ค.
-
HandlerMapping
- DispatcherServlet์ด ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๋ฐ์ ์์ฒญ์ ์ด๋ค Controller์๊ฒ ์ ๋ฌํด์ผํ ์ง ๊ฒฐ์ ํ๋ค.
- URL, ์์ฒญ ์ ๋ณด ๋ฑ์ ๊ธฐ์ค์ผ๋ก ์ด๋ค ํธ๋ค๋ฌ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ง ๊ฒฐ์ ํ๋ค.
-
Controller
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ ๋ค, ๋น์ฆ๋์ค, ๋ฐ์ดํฐ ๊ด๋ จ ๋ก์ง์ ์ํํ๊ธฐ ์ํด Model์ ํธ์ถํ๋ค. ๋ค์ Model๋ก๋ถํฐ ๋ฐํ๋ฐ์ ๊ฒฐ๊ณผ๋ฅผ DispatcherServlet์๊ฒ ์ ๋ฌํ๋ค.
-
ModelAndView
- Controller๊ฐ ์ฒ๋ฆฌํ ๋ฐ์ดํฐ ๋ฐ ํ๋ฉด์ ๋ํ ์ ๋ณด๋ฅผ ๋ณด์ ํ ๊ฐ์ฒด
-
ViewResolver
- Controller์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค View๋ฅผ ๊ฒฐ์ ํ๋ค.
-
View
- Controller์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค ์๋ต ํ๋ฉด์ ์์ฑํ๋ค.
Controller
Client์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ญํ
ํด๋์ค ์๋จ์ @Controller
์ด๋
ธํ
์ด์
์ ์ถ๊ฐํ์ฌ Controller์์ ๋ช
์ํ๋ค.
Controller ๊ฐ์ฒด๋ฅผ ์ฃผ์
ํ๊ธฐ ์ํด์๋ servlet-context.xml ํ์ผ ๋ด์ <bean>
ํ๊ทธ๋ก ๊ฐ์ฒด๋ฅผ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ๊ณผ, ์๋์ผ๋ก ์ค์บํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
์๋์ผ๋ก ์ค์บํ๋๋ก ํ๊ธฐ ์ํด์๋ servlet-context.xml ํ์ผ ๋ด์ <context:component-scan>
ํ๊ทธ๋ฅผ ์ ์ธํ๋ค. ์์ฑ์ผ๋ก base-package
๋ฅผ ์ค์ ํ์ฌ ํด๋น ํจํค์ง ๋ด์ @Controller
์ด๋
ธํ
์ด์
์ ์ฌ์ฉํ๊ณ ์๋ ํด๋์ค๋ฅผ ์๋์ผ๋ก ์ฐพ๋๋ก ํ๋ค.
Model
Business์ DataBase ๋ก์ง์ ์ฒ๋ฆฌํ๋ ์ญํ
์ฃผ๋ก DAO, DTO, Service ๋ฑ์ด ํด๋น๋๋ค.
DAO ํด๋์ค ์๋จ์๋ @Repository
, Service ํด๋์ค ์๋จ์๋ @Service
์ด๋
ธํ
์ด์
์ ์ถ๊ฐํ๋ค.