๐ RequestMappingHandlerAdapter ๋์ ๋ฐฉ์
ArgumentResolver
์ ๋ ธํ ์ด์ ๊ธฐ๋ฐ์ ์ปจํธ๋กค๋ฌ๋ ์์ฒญ๋๊ฒ ๋ค์ํ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํ ์ ์์๋ค. HttpServletRequest , Model ์ ๋ฌผ๋ก ์ด๊ณ @RequestBody HttpEntity ๊ฐ์ HTTP ๋ฉ์ธ์ง๋ฅผ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ๊น์ง ํฐ ์ ์ฐํจ์ ๋ณด์ฅํ๋ค.
์ด๋ ๊ฒ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ์ฐํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ ์ด์ ๊ฐ ๋ฐ๋ก ArgumentResolver ๋๋ถ์ด๋ค.
์ ๋ ธํ ์ด์ ๊ธฐ๋ฐ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฒ๋ฆฌํ๋ RequestMappingHandlerAdapter ๊ฐ ArgumentResolver๋ฅผ ํธ์ถํด์ ์ปจํธ๋กค๋ฌ(ํธ๋ค๋ฌ)๊ฐ ํ์๋ก ํ๋ ๋ค์ํ ํ๋ผ๋ฏธํฐ์ ๊ฐ(๊ฐ์ฒด)์ ์์ฑํ๋ค. ํ๋ผ๋ฏธํฐ ๊ฐ์ด ๋ชจ๋ ์ค๋น๋๋ฉด ์ปจํธ๋กค๋ฌ๋ฅผ ํธ์ถํ๋ฉด์ ๊ฐ์ ๋๊ฒจ์ค๋ค. ์คํ๋ง์ ์๋ฅธ ๊ฐ๊ฐ ๋๋ ArgumentResolver๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ๋ค.
ArgumentResolver
* ์ ํํ๋ HandlerMethodArgumentResolver ์ธ๋ฐ ์ค์ฌ์ ArgumentResolver๋ผ๊ณ ๋ถ๋ฅธ๋ค.
supportsParameter() : ํด๋น ํ๋ผ๋ฏธํฐ๋ฅผ ์ง์ํ๋์ง ์ฒดํฌํ๋ ๋ฉ์๋.
resolveArgument() : ํด๋น ํ๋ผ๋ฏธํฐ๋ฅผ ์ง์ํ๋ค๋ฉด ํธ์ถ๋์ด ์ค์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฉ์๋. ์ฌ๊ธฐ์ ์์ฑ๋ ๊ฐ์ฒด๊ฐ ์ปจํธ๋กค๋ฌ ํธ์ถ์ ๋์ด๊ฐ๋ค.
ReturnValueHandler
* HandlerMethodReturnValueHandler ๋ฅผ ์ค์ฌ์ ReturnValueHandle ๋ผ ๋ถ๋ฅธ๋ค.
ArgumentResolver ์ ๋น์ทํ๋ฐ, ์ด๊ฒ์ ์๋ต ๊ฐ์ ๋ณํํ๊ณ ์ฒ๋ฆฌํ๋ค.
์ปจํธ๋กค๋ฌ์์ String์ผ๋ก ๋ทฐ ์ด๋ฆ์ ๋ฐํํด๋, ๋์ํ๋ ์ด์ ๊ฐ ๋ฐ๋ก ReturnValueHandler ๋๋ถ์ด๋ค.
๐ HTTP Message Converter
HTTP ๋ฉ์์ง ์ปจ๋ฒํฐ๋ ์ด๋์ฏค ์์๊น?
HTTP ๋ฉ์์ง ์ปจ๋ฒํฐ๋ฅผ ์ฌ์ฉํ๋ @RequestBody ๋ ์ปจํธ๋กค๋ฌ๊ฐ ํ์๋ก ํ๋ ํ๋ผ๋ฏธํฐ์ ๊ฐ์ ์ฌ์ฉ๋๋ค.
@ResponseBody ์ ๊ฒฝ์ฐ๋ ์ปจํธ๋กค๋ฌ์ ๋ฐํ ๊ฐ์ ์ด์ฉํ๋ค
์์ฒญ์ ๊ฒฝ์ฐ
@RequestBody ๋ฅผ ์ฒ๋ฆฌํ๋ ArgumentResolver ๊ฐ ์๊ณ ,
HttpEntity ๋ฅผ ์ฒ๋ฆฌํ๋ArgumentResolver ๊ฐ ์๋ค.
์ด ArgumentResolver ๋ค์ด HTTP ๋ฉ์์ง ์ปจ๋ฒํฐ๋ฅผ ์ฌ์ฉํด์ ํ์ํ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
์๋ต์ ๊ฒฝ์ฐ
@ResponseBody ์ HttpEntity ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฐ๊ฐ์ ReturnValueHandler ๊ฐ ์๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์์ HTTP ๋ฉ์์ง ์ปจ๋ฒํฐ๋ฅผ ํธ์ถํด์ ์๋ต ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ ๋ค.
์คํ๋ง MVC๋
@RequestBody @ResponseBody์ ๊ฒฝ์ฐ,
RequestResponseBodyMethodProcessor (ArgumentResolver)
HttpEntity์ ๊ฒฝ์ฐ,
HttpEntityMethodProcessor (ArgumentResolver)๋ฅผ ์ฌ์ฉํ๋ค.
'์ด๋ก > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring Test] Spring TestContext Framework (0) | 2022.02.02 |
---|---|
[Spring Test] private๋ก ์ ์ธ๋ ๋ฉ์๋๋ฅผ ์ด๋ป๊ฒ ํ ์คํธ ํ ์ ์์๊น (0) | 2022.01.23 |
์คํ๋ง HTTP Message Body ์ Message Converter 1 (0) | 2021.11.20 |
[TEST] ์คํ๋ง์์์ TEST, ๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ์ TEST (0) | 2021.10.29 |
[Spring Boot] Spring Security (0) | 2021.08.15 |