๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ฐ˜์‘ํ˜•

์ „์ฒด ๊ธ€396

Spring @RequestBody ํ•„๋“œ ๋ฐ”์ธ๋”ฉ์ด ๋˜์ง€ ์•Š๋Š” ์ด์Šˆ (feat. Lombok, Jackson์˜ ๋„ค์ด๋ฐ ์ฐจ์ด) ๊ฐœ์š” Spring์—์„œ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ JSON ํ˜•์‹์œผ๋กœ ๋ฐ›๊ณ , @RequestBody๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JSON body์˜ ๋ฐ์ดํ„ฐ๋ฅผ Java Object์˜ ํ•„๋“œ์™€ ์—ญ์ง๋ ฌํ™”(Deserialize)๋ฅผ ํ†ตํ•ด ๊ฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋ฐ”์ธ๋”ฉ์ด ์ด๋ฃจ์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ํ•„๋“œ์˜ ํŠน์ • ๋„ค์ด๋ฐ + Lombok์˜ @Getter๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐ”์ธ๋”ฉ์ด ์ •์ƒ์ ์œผ๋กœ ๋˜์ง€ ์•Š๋Š” ์ด์Šˆ๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ์š”, ์ด์™€ ๊ด€๋ จํ•˜์—ฌ ๊ฐ„๋žตํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ### Send POST request with json body POST http://localhost:8080/api/v1/test Content-Type: application/json { "pId": "pId", "poId": "poId" } ์˜ˆ๋ฅผ ๋“ค์–ด, ์œ„์™€ ๊ฐ™์€ ์„œ๋ฒ„ ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•˜๊ณ  ํด๋ผ.. 2024. 3. 20.
Spring Swagger(springdoc-openapi) Unable to render this definition ์˜ค๋ฅ˜ Spring ์—์„œ ๋ฌธ์„œํ™”๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ ์ž Swagger(Springdoc-openapi)๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ, ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ๊ตฌ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค. Unable to render this definition ... ์‹ค์ œ api-docs URL๋กœ ์ ‘๊ทผํ•ด๋ณด๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฉ”์‹œ์ง€๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ปจ๋ฒ„ํ„ฐ๊ฐ€ ์•ˆ๋˜์–ด ๋‚˜์˜ค๋Š” ๋“ฏ ํ•œ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” MessageConverter ๋ฅผ Customํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ , ๋Œ€๋žต์ ์œผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉ์ค‘์ž…๋‹ˆ๋‹ค. @Override public void configureMessageConverters(List 2024. 3. 4.
์‹ ๊ทœ ์‹œ์Šคํ…œ ๊ตฌ์ถ•ํ•˜๊ธฐ (feat. MSA, ๋ฐฑ์˜คํ”ผ์Šค) 2023๋…„, ํŒ€ ๋‚ด๋ถ€์—์„œ๋Š” `ํŒฉํ† ๋ฆฌ` ๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ์‹ ๊ทœ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋กœ์˜ ๊ฒฝ๋ ฅ์ด ๋งŽ์ง€๋Š” ์•Š์ง€๋งŒ, ๊ฐ€์žฅ ๊ฒฝํ—˜์ด ์ข‹์•˜๋˜ ํ”„๋กœ์ ํŠธ์˜€๊ณ , ์ฒ˜์Œ์œผ๋กœ ํ”„๋กœ์ ํŠธ ๋‹ค์šด(?) ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ž‘๋…„ ์ƒ๋ฐ˜๊ธฐ ์ง€๋…ํ•œ ๊ฐœ๋ฐœ ๋ฒˆ์•„์›ƒ์„ ๊ฒช์—ˆ๊ธฐ์—, ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ์—๋Š” ๋งค์šฐ ์†Œ๊ทน์ ์œผ๋กœ ์ž„ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ์–ด๋Š ์ •๋„ ๋ฒˆ์•„์›ƒ์„ ํšŒ๋ณตํ•˜๊ณ , ์ ์ฐจ ์ ๊ทน์ ์œผ๋กœ ์ฐธ์—ฌํ•˜๋ฉฐ ์ผ์ •์€ ๋น ๋“ฏํ–ˆ์ง€๋งŒ ๊ต‰์žฅํžˆ ์žฌ๋ฐŒ๊ณ  ์ฆ๊ฒ๊ฒŒ ํ–ˆ์—ˆ๋Š”๋ฐ์š”, ๊ด€๋ จํ•˜์—ฌ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•ด ๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ์‹ ๊ทœ ์‹œ์Šคํ…œ ๋ฐฐ๊ฒฝ ๊ธˆ์•ก๊ถŒ์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๊ธฐํ”„ํ‹ฐ์ฝ˜์€, ์ •ํ•ด์ง„ ๊ธˆ์•ก ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ์ƒํ’ˆ์ž…๋‹ˆ๋‹ค. ์œ„ ์Šคํƒ€๋ฒ…์Šค๋ฅผ ์˜ˆ๋กœ ๋“ค์ž๋ฉด 20,000์› ํ•œ๋„ ๋‚ด์—์„œ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ์Šคํƒ€๋ฒ…์Šค ๊ธˆ์•ก๊ถŒ ์ƒํ’ˆ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ˜„์žฌ ๊ธˆ์•ก๊ถŒ.. 2024. 1. 19.
Spring ์Šค์ผ€์ฅด๋Ÿฌ ๋กœ์ง์ด ๋ฉ€ํ‹ฐ ์„œ๋ฒ„ ์ค‘ ํ•œ ์„œ๋ฒ„์—์„œ๋งŒ ์‹คํ–‰๋˜๋„๋ก ์„ค์ •ํ•˜๊ธฐ ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๋ฉด ์ตœ์†Œํ•œ 2๋Œ€ ์ด์ƒ์˜ ๋ฉ€ํ‹ฐ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์šด์˜์„ ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค์—์„œ ํŠน์ • ์‹œ๊ฐ„์—๋งŒ ์ˆ˜ํ–‰๋˜๋Š” ๋ฐฐ์น˜์„ฑ ๋กœ์ง์ด ์กด์žฌํ•œ๋‹ค๋ฉด, ๋ฐฐ์น˜ ์„œ๋ฒ„๋ฅผ ๋ณ„๋„๋กœ ๋‘๊ธฐ๋„ ํ•˜์ง€๋งŒ ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ์—์„œ ์Šค์ผ€์ฅด๋Ÿฌ๋ฅผ ์„ค์ •ํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์Šค์ผ€์ฅด๋Ÿฌ๋ฅผ ์ ์šฉํ•˜๋ฉด ์‹ค์ œ ์šด์˜ ํ™˜๊ฒฝ์—์„œ A, B ์„œ๋ฒ„ ๋ชจ๋‘ ์Šค์ผ€์ฅด์ด ๋Œ๋ฉด์„œ ๋กœ์ง์ด 2๋ฒˆ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š”๋ฐ์š”, ์ด์™€ ๊ด€๋ จํ•˜์—ฌ ์กฐ๊ธˆ ์ฐพ์•„๋ณด๋‹ˆ ๋Œ€๋ถ€๋ถ„์˜ ํฌ์ŠคํŒ…์—์„œ ShedLock? ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•˜๋Š” ๋“ฏํ•œ๋ฐ, Spring Profile ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„์™€ ๊ฐ™์ด ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์กด์žฌํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ์— @Profile ์„ ์„ค์ •ํ•˜๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ๋•Œ ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ์„ค์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. IntelliJ Run/Debug Configurations Application.. 2023. 12. 30.
Java ํด๋ž˜์Šค ์„ค๊ณ„ ์•ˆ์ „ํ•˜๊ฒŒ ์ž˜ ํ•˜๊ธฐ (feat. ์‘์ง‘๋„) ์ง€๋‚œ ํฌ์ŠคํŒ… Java ํด๋ž˜์Šค ์„ค๊ณ„ ์•ˆ์ „ํ•˜๊ฒŒ ์ž˜ ํ•˜๊ธฐ ํŽธ์—์„œ๋Š” ํด๋ž˜์Šค ์„ค๊ณ„์™€ ๊ด€๋ จํ•˜์—ฌ ๋‹ค์Œ ๋‚ด์šฉ๋“ค์„ ์‚ดํŽด๋ดค์—ˆ๋Š”๋ฐ์š”, ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์ •์ƒ์ ์ธ ๊ฐ’ ์„ค์ •ํ•˜๊ธฐ ๋ณ€์ˆ˜๋ฅผ ๋ถˆ๋ณ€์œผ๋กœ ๋งŒ๋“ค์–ด์„œ ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ๋™์ž‘ ์˜ˆ๋ฐฉํ•˜๊ธฐ ๋ถˆ๋ณ€์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ๋ฉ”์„œ๋“œ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ง€์—ญ ๋ณ€์ˆ˜๋„ ๋ถˆ๋ณ€์œผ๋กœ ๋งŒ๋“ค๊ธฐ ๋ฉ”์„œ๋“œ์— ์ž˜๋ชป๋œ ๊ฐ’์˜ ์ „๋‹ฌ์„ ์˜ˆ๋ฐฉํ•˜๊ธฐ ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์‘์ง‘๋„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํด๋ž˜์Šค ์„ค๊ณ„์™€ ๊ด€๋ จ๋œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์‘์ง‘๋„๋Š”, 'ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์™€ ๋กœ์ง ์‚ฌ์ด์˜ ๊ด€๊ณ„๊ฐ€ ์–ผ๋งˆ๋‚˜ ๊ฐ•ํ•œ์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ์ง€ํ‘œ' ๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. 1. static ๋ฉ”์„œ๋“œ ์˜ค์šฉ static ๋ฉ”์„œ๋“œ๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ํŽธ๋ฆฌํ•จ์ด ์žˆ์ง€๋งŒ, ๋‹ค๋ฅธ ํ•œํŽธ์œผ๋กœ๋Š” ์‘์ง‘๋„๊ฐ€ ๋‚ฎ์•„์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. static ๋ฉ”์„œ๋“œ.. 2023. 12. 20.
Java ํด๋ž˜์Šค ์„ค๊ณ„ ์•ˆ์ „ํ•˜๊ฒŒ ์ž˜ ํ•˜๊ธฐ ํด๋ž˜์Šค๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ดˆ๊ธฐ ๋‹จ๊ณ„๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์€๋ฐ, ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์—์„œ ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์„ค๊ณ„๋ฅผ ์ž˜ ํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋– ํ•œ ์ ๋“ค์„ ๊ณ ๋ คํ•ด์•ผ ํ•  ์ง€ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค ์˜ˆ์ œ๋Š” ๊ธˆ์•ก์„ ๋‚˜ํƒ€๋‚ด๋Š” Money ํด๋ž˜์Šค๋ฅผ ํ† ๋Œ€๋กœ ์„ค๊ณ„ ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1. ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์ •์ƒ์ ์ธ ๊ฐ’ ์„ค์ •ํ•˜๊ธฐ ์œ„์™€ ๊ฐ™์ด ๋ชจ๋“  ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋“ค์„ ๋ฐ›๋Š” ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”๋ฐ, ์œ„์˜ ๋ฌธ์ œ์ ์€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ž˜๋ชป๋œ ๊ฐ’์ด ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์œ„์˜ ๊ฒฝ์šฐ ๊ฐ์ฒด๋Š” ์ •์ƒ์ ์œผ๋กœ ์ƒ์„ฑ๋˜์ง€๋งŒ, ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ํ•˜์—ฌ ๊ฐ์ฒด๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค๋ฉด ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ž˜๋ชป๋œ ๊ฐ’์ด ์œ ์ž…๋˜์ง€ ๋ชปํ•˜๊ฒŒ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ธˆ์•ก (amount): 0 ์ด์ƒ์˜ ์ •์ˆ˜ ํ†ตํ™” (currency): null .. 2023. 12. 16.
Spring @ComponentScan ๋™์ž‘ ๊ณผ์ • Spring์—์„œ ํด๋ž˜์Šค์— @Configuration, @RestController, @Service ๋“ฑ์˜ ์–ด๋…ธํ…Œ์ด์…˜์„ ์„ ์–ธํ•˜๋ฉด ์Šคํ”„๋ง์€ ํ•ด๋‹น ์–ด๋…ธํ…Œ์ด์…˜๋“ค์„ ์Šค์บ”ํ•ด์„œ ๋นˆ์œผ๋กœ ๋“ฑ๋ก์„ ํ•ด์ฃผ๋Š”๋ฐ์š”, ์ด๋Ÿฌํ•œ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด @ComponentScan ์–ด๋…ธํ…Œ์ด์…˜ ์ž…๋‹ˆ๋‹ค. @ComponentScan ์€ ๋‹จ์–ด ๊ทธ๋Œ€๋กœ @Component ์–ด๋…ธํ…Œ์ด์…˜์ด ๋ถ™์€ ํด๋ž˜์Šค๋“ค์„ ์Šค์บ”ํ•˜์—ฌ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•˜๋Š”๋ฐ, ์œ„์— ์–ธ๊ธ‰๋œ ์–ด๋…ธํ…Œ์ด์…˜๋“ค์€ ๋ชจ๋‘ ๋‚ด๋ถ€์— @Component ์–ด๋…ธํ…Œ์ด์…˜์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„์™€ ๊ฐ™์€ ์–ด๋…ธํ…Œ์ด์…˜๋“ค์„ ์„ค์ •ํ•˜๋ฉด ์Šคํ”„๋ง์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์Šค์บ”ํ•˜๊ณ , ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. @ComponentScan ComponentScan ์–ด๋…ธํ…Œ์ด์…˜์— ์กด์žฌํ•˜๋Š” ์ฃผ์„์œผ๋กœ, ๋Œ€๋žต์ ์ธ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.. 2023. 12. 9.
Spring Bean ์ด ๋“ฑ๋ก๋˜๋Š” ๊ณผ์ • ์Šคํ”„๋ง์„ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด @Configuration, @Component, @Bean ๋“ฑ์˜ ์–ด๋…ธํ…Œ์ด์…˜์„ ํ†ตํ•ด ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ๋นˆ์„ ๋“ฑ๋กํ•˜๋Š”๋ฐ์š”, ์–ด๋– ํ•œ ๊ณผ์ •์„ ํ†ตํ•ด Bean ์ด ๋“ฑ๋ก๋˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋Š” ์œ„์™€ ๊ฐ™์ด @Configuration ์–ด๋…ธํ…Œ์ด์…˜์„ ์„ค์ •ํ•œ TestConfiguration ํด๋ž˜์Šค๊ฐ€ ์กด์žฌํ•˜๊ณ , main ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•œ Main ํด๋ž˜์Šค์—์„œ ์–ด๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜์˜ AnnotationConfigApplicationContext ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ด ์ƒ์„ฑ์ž์—๋Š” TestConfiguration ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค. ์œ„ ๊ณผ์ •์„ ํ†ตํ•ด ์–ด๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜์˜ Spring Bean ์ด ๋“ฑ๋ก๋˜๋Š” ๊ณผ์ •์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. BeanFactory BeanFactory ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์Šคํ”„๋ง .. 2023. 12. 2.
์Šคํ”„๋ง์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ์‹œ ํ•œ๊ธ€์ด ๊นจ์ง€๋Š” ์ด์Šˆ (ISO-8859-1) ์•ˆ๋…•ํ•˜์„ธ์š”, ์ตœ๊ทผ ํด๋ผ์ด์–ธํŠธ(Vue) ์™€ ์„œ๋ฒ„(Spring Boot) ์—ฐ๋™ ์‹œ ์„œ๋ฒ„์—์„œ ํ•œ๊ธ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ์—์„œ ํ•œ๊ธ€์ด ๊นจ์ง€๋Š” ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ–ˆ์—ˆ๋Š”๋ฐ์š”, ์ด์™€ ๊ด€๋ จํ•˜์—ฌ ๊ฐ„๋žตํžˆ ์ •๋ฆฌํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์›์ธ HttpMessageConverter ์ธํ„ฐํŽ˜์ด์Šค๋Š” Spring์—์„œ HTTP request, response ๋ฅผ ๋ณ€ํ™˜ํ•ด ์ฃผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ธ๋ฐ์š”, ํ•ด๋‹น ํฌ์ŠคํŒ…์„ ์ดํ•ดํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋‚ด์šฉ์ด๋ผ ๊ฐ„๋žตํ•˜๊ฒŒ๋งŒ ์„ค๋ช…ํ•˜๊ณ  ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง์—์„œ ํ”ํžˆ ์‚ฌ์šฉํ•˜๋Š” @RestController ์–ด๋…ธํ…Œ์ด์…˜์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” @ResponseBody ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, HttpMessageConverter ์ด ๋™์ž‘ํ•˜๊ณ  ๋ฐ˜ํ™˜ ํƒ€์ž…์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ๊ตฌํ˜„์ฒด๊ฐ€ ์‚ฌ์šฉ์ด ๋ฉ๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ๋Š” ByteArrayHttpMessageC.. 2023. 11. 20.
Bean Validation (Hibernate Validation) Bean Validation์€ ํ•„๋“œ์˜ ๊ฐ’, ๋ฒ”์œ„ ๋“ฑ์„ ๊ฒ€์ฆํ•˜๊ณ ์ž ํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์–ด๋…ธํ…Œ์ด์…˜ ๋ฐ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ชจ์Œ ์ด ๊ธฐ์ˆ ์˜ ๊ตฌํ˜„์ฒด ์ค‘ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌํ˜„์ฒด๊ฐ€ Hibernate Validator https://docs.jboss.org/hibernate/validator/6.2/reference/en-US/html_single/#validator-defineconstraints-spec Hibernate Validator 6.2.5.Final - Jakarta Bean Validation Reference Implementation: Reference Guide Validating data is a common task that occurs throughout all applicati.. 2023. 9. 30.
๋ฐ˜์‘ํ˜•