๐ง ์๋ก
์ด์ ๊ธ์์ ์คํ๋ง MVC์ ์ ์ฒด์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋ตํ๊ฒ ์ดํด๋ณด์์ต๋๋ค.
์ด๋ HandlerMapping๊ณผ HandlerAdapter๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ ์ ์์๋๋ฐ, ์ด๋ฒ์๋ ์ด์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ง Controller๊ฐ ํธ์ถ๋๊ธฐ ์ํ ์กฐ๊ฑด
์ ํฌ๊ฐ ์์ฑํ๋ Controller(ํน์ Handler)๊ฐ ํธ์ถ๋๊ธฐ ์ํด์๋ ์๋์ ๊ฐ์ ๋ ๊ฐ์ง ์กฐ๊ฑด์ด ๋ง์กฑ๋์ด์ผ ํฉ๋๋ค.
1. ์์ฒญ(Request) URL์ด ๋ค์ด์ค๋ฉด, ํด๋น ์์ฒญ์ ๋์๋๋ Controller(Handler)๋ฅผ HandlerMapping ์์์ ์ฐพ์ ์ ์์ด์ผ ํฉ๋๋ค.
2. HandlerMapping์ ํตํด ์ฐพ์ Controller(Handler)๋ฅผ ์คํํ ์ ์๋ HandlerAdapter๊ฐ ํ์ํฉ๋๋ค.
์คํ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๐ ์คํ ํ๋ฆ
- HandlerMapping์ผ๋ก ํธ๋ค๋ฌ(์ปจํธ๋กค๋ฌ)๋ฅผ ์กฐํํฉ๋๋ค.
- ํธ๋ค๋ฌ๋ฅผ ์กฐํํ๋ค๋ฉด ์ดํ, ํด๋น ํธ๋ค๋ฌ๋ฅผ ์ฒ๋ฆฌ(๋ณํ)ํ ์ ์๋ HandlerAdapter๋ฅผ ์กฐํํฉ๋๋ค.
- ์กฐํํ ํธ๋ค๋ฌ ์ด๋ํฐ๊ฐ ์๋ค๋ฉด, ์ด๋ํฐ๋ฅผ ์คํํฉ๋๋ค.(์ด๋ํฐ์ ๋ด๋ถ์์ ์กฐํํ ํธ๋ค๋ฌ๋ฅผ ์คํํฉ๋๋ค)
๐ง ์คํ๋ง ๋ถํธ๊ฐ ๋ฑ๋กํด์ฃผ๋ HandlerMapping ๊ณผ HandlerAdapter
์คํ๋ง ๋ถํธ๋ ์๋์ผ๋ก ๋ช ๊ฐ์ง HandlerMapping๊ณผ HandlerAdapter๋ฅผ ๋ฑ๋กํด ์ฃผ๋๋ฐ, ์ด์ ๋ํด ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ HandlerMapping
์์ฒญ๊ณผ, ํด๋น ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ ํธ๋ค๋ฌ๋ฅผ ๋งคํ์์ผ์ฃผ๋ ์ญํ ์ ์ํํฉ๋๋ค.
์์ ๊ฐ์ด ์ฌ๋ฌ ์ข ๋ฅ์ HanlderMapping ๊ตฌํ์ฒด๊ฐ ์๋ ๊ฒ์ ์ ์ ์์ผ๋ฉฐ,
๊ธฐ๋ณธ์ผ๋ก ๋ฑ๋ก๋๋ HandlerMapping๋ค์๋ ๋ค์๊ณผ ๊ฐ์ ์ข ๋ฅ๊ฐ ์์ต๋๋ค.
์ด๋ค ์ค ๋ํ์ ์ธ HandlerMapping์ ๋ํ ์ค๋ช ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
RequestMappingHandlerMapping : ์ ๋ ธํ ์ด์ ๊ธฐ๋ฐ์ ์ปจํธ๋กค๋ฌ์ธ @RequestMapping ์์ ์ฌ์ฉํฉ๋๋ค.
BeanNameUrlHandlerMapping : ์คํ๋ง ๋น์ ์ด๋ฆ์ผ๋ก ํธ๋ค๋ฌ๋ฅผ ์ฐพ์ต๋๋ค.
์๋์ ๊ฐ์ด ์ดํ๋ฆฌ์ผ์ด์ ์คํ ์ AbstractHandlerMethodMapping์์ isHandler ๋ฉ์๋๋ฅผ ํตํด ์ปจํธ๋กค๋ฌ๋ฅผ ์กฐํํ์ฌ ๋ฑ๋กํฉ๋๋ค
๊ทธ๋ฆฌ๊ณ ๋ค์๊ณผ ๊ฐ์ด url๊ณผ ํด๋น url์ ๋ค์ด์จ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ฉ์๋๋ฅผ ๋ฑ๋กํฉ๋๋ค.
๐ HandlerAdapter
ํธ๋ค๋ฌ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ํธ๋ค๋ฌ ์ด๋ํฐ์ ๋๋ค.
์์ ๊ฐ์ด ์ฌ๋ฌ ์ข ๋ฅ์ HanlderAdapter ๊ตฌํ์ฒด๊ฐ ์๋ ๊ฒ์ ์ ์ ์์ผ๋ฉฐ,
๊ธฐ๋ณธ์ผ๋ก ๋ฑ๋ก๋๋ HandlerAdapter๋ค์๋ ๋ค์๊ณผ ๊ฐ์ ์ข ๋ฅ๊ฐ ์์ต๋๋ค.
RequestMappingHandlerAdapter : ์ ๋ ธํ ์ด์ ๊ธฐ๋ฐ์ ์ปจํธ๋กค๋ฌ์ธ @RequestMapping์์ ์ฌ์ฉํฉ๋๋ค.
HttpRequestHandlerAdapter : HttpRequestHandler ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
SimpleControllerHandlerAdapter : Controller ์ธํฐํ์ด์ค(์ ๋ ธํ ์ด์ X, ๊ณผ๊ฑฐ์ ์ฌ์ฉ)๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
๋๋ถ๋ถ์ ๊ฐ๋ฐ์๋ค์ @RequestMapping ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ๋ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ฐ๋ผ์ ํด๋น ์ด๋ ธํ ์ด์ ๊ธฐ๋ฐ์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ง์ํ๋ RequestMappingHandlerMapping๊ณผ RequestMappingHandlerAdapter๊ฐ ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋๊ฒ ๋ฑ๋ก๋ฉ๋๋ค.
Reference
'๐๏ธ Spring > Web MVC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[MVC] HTTP ์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ (@ModelAttribute, @RequestBody ๋ฑ) (0) | 2021.12.29 |
---|---|
[MVC] ์์ฒญ ๋งคํ (@RequestMapping, PathVariable) (0) | 2021.12.29 |
[MVC] ์คํ๋ง ์น MVC ๊ตฌ์กฐ (0) | 2021.12.26 |
[MVC] ํ๋ก ํธ ์ปจํธ๋กค๋ฌ ํจํด (0) | 2021.12.26 |
[MVC] ์๋ธ๋ฆฟ - HttpServletResponse (0) | 2021.12.25 |