๐Ÿ’ Spring/๊ฐœ๋… ๋ฐ ์ดํ•ด

๐Ÿ’ Spring/๊ฐœ๋… ๋ฐ ์ดํ•ด

Spring ์กด์žฌํ•˜์ง€ ์•Š๋Š” API ์‘๋‹ต ์ปค์Šคํ„ฐ๋งˆ์ด์ง• (feat. ๋‚ด๋ถ€ ๋™์ž‘๋„ ์‚ดํŽด๋ณด๊ธฐ)

Intro ๊ธฐ๋ณธ์ ์œผ๋กœ Spring MVC๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” API ์š”์ฒญ ์‹œ ์‘๋‹ต์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. { "timestamp":"2023-09-21T11:30:05.517+00:00", "status":404, "error":"Not Found", "path":"/api/404" } ์œ„ ์‘๋‹ต์€ Spring MVC๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•ด์ฃผ๋Š” ์˜ค๋ฅ˜ ์‘๋‹ต ์ž…๋‹ˆ๋‹ค. ๋ณดํ†ต ์‹ค๋ฌด์—์„œ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•ด์ฃผ๋Š” ์‘๋‹ต๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋ณด๋‹จ ๊ณตํ†ต ์‘๋‹ต ํฌ๋งท์„ ๋งž์ถฐ์„œ ์‚ฌ์šฉํ•  ๊ฒƒ ์ž…๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด Not Found์— ๋Œ€ํ•œ ์‘๋‹ต์„ ์ปค์Šคํ…€ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์™€ ๋‚ด๋ถ€์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๊ณ  ์žˆ๋Š”์ง€๋„ ํ•จ๊ป˜ ์—๋Ÿฌ ๋กœ๊ทธ์™€ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์—๋Ÿฌ ์‘๋‹ต์ด ์ƒ์„ฑ๋˜๊ธฐ๊นŒ์ง€์˜ ์—ฌ์ • ๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ์Šคํ”„๋งMVC์—์„œ๋Š” ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๋ฅผ..

๐Ÿ’ Spring/๊ฐœ๋… ๋ฐ ์ดํ•ด

Spring MVC | @Valid๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”๊ฑฐ์•ผ? (feat. DispatcherServlet)

@Valid Spring Boot์—์„œ @Valid๋ฅผ @RequestBody ๊ฐ์ฒด์— ๋ถ™์ด๊ฒŒ ๋˜๋ฉด, ์ด๋•Œ ์Šคํ”„๋ง์€ Hibernate Validator(javax.validation ํŒจํ‚ค์ง€์— ์žˆ๋Š” JSR-303/JSR-380์ธ BeanValidation์„ ํ™œ์šฉํ•จ)๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Spring MVC์—์„œ๋Š” Validation์ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ MVC ๋™์ž‘์›๋ฆฌ์™€ ํ•จ๊ป˜ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Dispatcher Servlet ์•„๋ž˜๋Š” Spring MVC์˜ ๋™์ž‘๊ตฌ์กฐ๋ฅผ ๋„์‹ํ™”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜ํ•˜๋‚˜ ์ฐจ๊ทผํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ์ œ์ผ ๋จผ์ € ๋ฐ›๋Š” ๋””์ŠคํŒจ์ฒ˜ ์„œ๋ธ”๋ฆฟ(ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ)์ž…๋‹ˆ๋‹ค. DispatcherServlet์˜ HandlerMapping ์ „๋žต์„ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ด ์ค„ Controller๋ฅผ ์ฐพ์Šต..

iseunghan
'๐Ÿ’ Spring/๊ฐœ๋… ๋ฐ ์ดํ•ด' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก