Spring Web MVC
Spring Web MVC๋ Spring Framework์์ ์ ๊ณตํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ
Spring Web MVC ์ํคํ
์ฒ์ ํต์ฌ ๊ตฌ์ฑ ์์

Spring Web MVC๋ ๋ค์ํ ์ปดํฌ๋ํธ๊ฐ ํ๋ ฅํ์ฌ HTTP ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์๋ต์ ์์ฑํ๋ ๊ตฌ์กฐ๋ก ๊ตฌ์ฑ๋๋ค.
Spring MVC๋ ๋ณดํต Tomcat ์์์ ๋์
Tomcat์ ์น ์๋ฒ์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋ ์ญํ ์ ํจ๊ป ์ํํ๋ฉฐ, ์์ฒญ์ ๋ฐ์ ์๋ธ๋ฆฟ์ ์์ํ๊ณ , ์ค๋ ๋ ํ์ ํตํด ์ฒ๋ฆฌ
Spring Boot๋ ์๋ฒ ๋๋ ์ปจํ ์ด๋ ์ฌ์ฉ์ด ๊ธฐ๋ณธ๊ฐ์ด๋ฉฐ Tomcat, Jetty, Undertow ์ค ์ ํ ๊ฐ๋ฅ
Spring Web MVC๋ ํฌ๊ฒ ๋ ๊ฐ์ง ๊ตฌ์ฑ์ผ๋ก ๋๋๋ค.
Servlet Container
Tomcat๊ณผ ๊ฐ์ WAS ๋ด๋ถ์์ ๋์ํ๋ฉฐ Servlet์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํ๊ณ DispatcherServlet ์คํ ํ๊ฒฝ ์ ๊ณต
์์ฒญ/์๋ต ์ฒ๋ฆฌ ๋ฐ ์ค๋ ๋ ๊ด๋ฆฌ ์ํ
Spring Container
IoC/DI ๊ธฐ๋ฐ์ผ๋ก ๊ด๋ฆฌ๋๋ Spring ํ๋ ์์ํฌ์ ํต์ฌ ์ปจํ ์ด๋
๊ณตํต Bean์ ๊ด๋ฆฌํ๋ Root Context์ Web ๊ณ์ธต Bean์ ๊ด๋ฆฌํ๋ Servlet Context๋ก ๊ตฌ์ฑ
์์ฒญ-์๋ต ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ
ํด๋ผ์ด์ธํธ ์์ฒญ ๋์ฐฉ
์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ๋ฑ๋ก๋ ํํฐ ์ฒด์ธ์ ์ ์ฉ
DispatcherServlet์ด ์์ฒญ์ ์์
HandlerMapping์์ ์์ฒญ์ ๋งค์นญ๋๋ ํธ๋ค๋ฌ ํ์
HandlerAdapter๊ฐ ์ปจํธ๋กค๋ฌ ํธ์ถ ๊ท์ฝ์ ์ํ
์ปจํธ๋กค๋ฌ๊ฐ ๋ชจ๋ธ ๋๋ ์๋ต ๋ณธ๋ฌธ ์์ฑ
๋ฐํ ํ์ ์ ๋ฐ๋ผ ViewResolver ๋๋ HttpMessageConverter๊ฐ ์๋ต ์์ฑ
DispatcherServlet์ด ์๋ต์ ์ปค๋ฐ
๊ตฌ์ฑ ์์ ๋ฐ ์ญํ
Filter Chain
์ธ์ฆ / ๋ก๊น / CORS ๋ฑ ๊ณตํต ์ฒ๋ฆฌ๋ฅผ ์ํ Filter๋ค์ด ์ฒด์ธ ํํ๋ก ์ฐ๊ฒฐ๋ ๊ตฌ์กฐ
Filter
FilterChain์ ์ฐ๊ฒฐ๋์ด ์๋ธ๋ฆฟ ์์ฒญ ์ ํ์ ๊ณตํต ์์ ์ ์ํ
DispatcherServlet
์์ฒญ ์์ ๋ฐ ์๋ต ๋ฐํ ์ญํ ์ํํ๋ Spring MVC์ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ
Handler Mapping
์์ฒญ URI๋ฅผ ๊ธฐ์ค์ผ๋ก Controller ํ์ ๋ฐ ๊ฒฐ์
Handler Interceptor
Controller ์ ํ๋ก ์คํ๋์ด ์ธ์ฆ / ๋ก๊น / ์ ์ฒ๋ฆฌ / ํ์ฒ๋ฆฌ ๋ฑ ์ํ
Handler Adapter
์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ ํธ๋ค๋ฌ๋ฅผ ์คํ
Controller
๋น์ฆ๋์ค ๋ก์ง ์ํ ๋ฐ ์๋ต ๋ฐ์ดํฐ ํน์ ๋ทฐ ๋ฐํ
Handler Exception Resolver
Controller์์ ๋ฐ์ํ ์์ธ๋ฅผ View ํน์ Response๋ก ๋ณํ
Application Code
์ฌ์ฉ์ ์ ์ ๋น์ฆ๋์ค ๋ก์ง ์ฝ๋(Service, Repository ๋ฑ)
DelegatingFilterProxy
Spring Bean์ผ๋ก ๋ฑ๋ก๋ Filter๋ฅผ ์๋ธ๋ฆฟ ํํฐ ์ฒด์ธ์ ์ฐ๊ฒฐํ๊ธฐ ์ํ ํ๋ก์
FilterChainProxy
Spring Security๊ฐ ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ณด์ ํํฐ ์ฒด์ธ
Spring MVC ์ฝ๋ ํ๋ฆ ์์
์๋๋ Spring MVC์์ HTTP ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ๋ทฐ๋ฅผ ๋ ๋๋งํ๋ ์ ์ฒด ํ๋ฆ์ ๊ฐ๋จํ ์์์ด๋ค.
@Controller: ํด๋น ํด๋์ค๋ฅผ ์คํ๋ง ์ปจํ ์ด๋์ ๋ฑ๋ก๋๋ ์น ๊ณ์ธต ์ปดํฌ๋ํธ๋ก ์ธ์.HandlerMapping์ด ์ด ์ ๋ ธํ ์ด์ ์ด ๋ถ์ ํด๋์ค๋ฅผ ํธ๋ค๋ฌ๋ก ํ์@RequestMapping,@GetMapping: URI์ HTTP ๋ฉ์๋ ์กฐ๊ฑด์ ๊ธฐ๋ฐ์ผ๋ก ํน์ ๋ฉ์๋์ ์์ฒญ์ ๋งคํ. ์ด ๋งคํ ์ ๋ณด๋HandlerMapping์์ ์ฌ์ฉ๋จModel: ์ปจํธ๋กค๋ฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋ ์ฌ์ฉํ๋ ๊ฐ์ฒด๋ก, ๋ด๋ถ์ ์ผ๋กModelMapํน์ModelAndView๋ก ๊ตฌ์ฑ๋์ด ๋ทฐ ๋ ๋๋ง ์ViewResolver๋ก ์ ๋ฌ๋จ๋ฐํ
String: ๋ ผ๋ฆฌ์ ๋ทฐ ์ด๋ฆ์ ๋ํ๋ด๋ฉฐ,ViewResolver๊ฐ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค์ ๋ฌผ๋ฆฌ์ ๋ทฐ ๊ฒฝ๋ก๋ฅผ ๊ฒฐ์ ํ์ฌ ๋ ๋๋ง ์ํ
๋์์ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ๋ค.
ํด๋ผ์ด์ธํธ๊ฐ
/spring/example๊ฒฝ๋ก๋ก HTTP ์์ฒญ์ ์ ์ก์์ฒญ์ ๋จผ์
Filter Chain์ ๊ฑฐ์น๋ฉฐ, ๋ฑ๋ก๋Filter,DelegatingFilterProxy,FilterChainProxy๋ฑ์ด ๋ณด์, ๋ก๊น , CORS ๋ฑ์ ์ฒ๋ฆฌํํฐ ์ฒ๋ฆฌ๊ฐ ๋๋๋ฉด ์์ฒญ์
Servlet Container์ ์ํดDispatcherServlet์ผ๋ก ์ ๋ฌDispatcherServlet์HandlerMapping์ ํตํด ํด๋น URI์ ๋งคํ๋ ์ปจํธ๋กค๋ฌ(SpringExampleController)์ ๋ฉ์๋๋ฅผ ํ์๋งคํ๋ ํธ๋ค๋ฌ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก
HandlerAdapter๊ฐ ์ค์ ์ปจํธ๋กค๋ฌ ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์๋๋ก ์คํ ๋ก์ง์ ์์์์ฒญ ์ ์๋ ํ์ํ ๊ฒฝ์ฐ
Handler Interceptor๊ฐ ๋จผ์ ์คํ๋์ด ์ธ์ฆ, ๋ก๊น ๋ฑ์ ์ ์ฒ๋ฆฌ๋ฅผ ์ํ์ปจํธ๋กค๋ฌ ๋ฉ์๋ ๋ด๋ถ์์ ๋น์ฆ๋์ค ๋ก์ง ์ํ
Model๊ฐ์ฒด์ ๋ฐ์ดํฐ ์ถ๊ฐ (Application Code์์ญ์์ ์ฒ๋ฆฌ)๋ ผ๋ฆฌ ๋ทฐ ์ด๋ฆ
"example"์ ๋ฐํDispatcherServlet์ ๋ฐํ๋ ๋ ผ๋ฆฌ ์ด๋ฆ์ ๊ธฐ๋ฐ์ผ๋กViewResolver๋ฅผ ํตํด ์ค์ JSP/HTML ๋ทฐ๋ฅผ ๊ฒฐ์ ๋ทฐ ๋ ๋๋ง ์ค ์์ธ๊ฐ ๋ฐ์ํ๋ฉด
Handler Exception Resolver๊ฐ ์ ์ ํ ์์ธ ์๋ต์ผ๋ก ๋ณํ์ต์ข ์ ์ผ๋ก ๋ทฐ๊ฐ ๋ ๋๋ง๋์ด ํด๋ผ์ด์ธํธ์ ์๋ต ์ ์ก
๋ฐํ ํ์
๊ณผ ์๋ต ์ฒ๋ฆฌ
Spring MVC ์ปจํธ๋กค๋ฌ ๋ฉ์๋๋ ๋ค์ํ ๋ฐํ ํ์ ์ ์ง์ํ๋ฉฐ, ๊ฐ ํ์ ์ ๋ฐ๋ผ ์๋ต ์ฒ๋ฆฌ ๋ฐฉ์์ด ๋ค๋ฅด๋ค.
String
ViewResolver๋ก ๋ ผ๋ฆฌ ์ด๋ฆ ํด์ ํ ๋ทฐ ๋ ๋๋ง
ModelAndView
๋ทฐ ์ด๋ฆ๊ณผ ๋ชจ๋ธ ๋์ ์ง์
void
์์ฒญ ๊ฒฝ๋ก ๊ธฐ๋ฐ ๋ทฐ ์ ํ ๋๋ ์ง์ HttpServletResponse ์ฌ์ฉ
ResponseEntity
์ํ ์ฝ๋/ํค๋/๋ณธ๋ฌธ์ ๋ช ์์ ์ผ๋ก ๊ตฌ์ฑ
@ResponseBody + T
๋ฉ์์ง ์ปจ๋ฒํฐ๋ก ๋ณธ๋ฌธ ์ง๋ ฌํ
์ฐธ๊ณ ์๋ฃ
Last updated
Was this helpful?