๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ป ํ”„๋กœ์ ํŠธ15

[ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…] ์ˆ™๋ จ CRUD ๊ธฐ๋ฐ˜์˜ ํ…Œ์ŠคํŠธ, ๊ฐœ์„  ๊ณผ์ œ ๊ณผ์ œ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ๋ฌธ์ œ ์ƒํ™ฉFilter์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ๋ฅผ GlobalExceptionHandler๋ฅผ ์ด์šฉํ•ด์„œ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ–ˆ์ง€๋งŒ, Postman์„ ์‹คํ–‰ํ–ˆ์„ ๋•Œ 500 Internal Error๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.๋ฌธ์ œ ์›์ธ@RestControllerAdvice๋Š” Filter์—์„œ ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๋Š”๋‹ค.Filter๋Š” Controller๋กœ ์š”์ฒญ์ด ์ „๋‹ฌ๋˜๊ธฐ ์ „์— ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์—, @RestController๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ์˜์—ญ์ด๋‹ค.์ด๋กœ ์ธํ•ด ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๊ณ  500 Internal Error๊ฐ€ ๋ฐ˜ํ™˜๋˜์—ˆ๋‹ค.ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•Filter ๋‚ด์—์„œ ์ง์ ‘ HTTP ์ƒํƒœ ์ฝ”๋“œ์™€ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์„ค์ •ํ•ด์„œ ์‘๋‹ตํ•˜๋„๋ก ์ˆ˜์ •ํ–ˆ๋‹ค.์ˆ˜์ •๋œ ์ฝ”๋“œif (session == null || session.getAttribute("loginM.. 2025. 1. 6.
๋‰ด์Šค ํ”ผ๋“œ ํ”„๋กœ์ ํŠธ_๊ฐœ์ธ KPT ํšŒ๊ณ  ๋‰ด์Šค ํ”ผ๋“œ ํ”„๋กœ์ ํŠธ Keep: ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ ์œ ์ง€ํ–ˆ์œผ๋ฉด ํ•˜๋Š” ๋ถ€๋ถ„์ฒด๊ณ„์ ์ธ ํ”„๋กœ์ ํŠธ ์ง„ํ–‰๋‚ด ์—ญ๋Ÿ‰์„ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜๊ณ  ๋ฌด๋ฆฌํ•˜์ง€ ์•Š๋Š” ๋ฒ”์œ„ ๋‚ด์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ์ง„ํ–‰ํ–ˆ๋‹ค.์˜๊ฒฌ ๊ฒฝ์ฒญ๊ณผ ํ˜‘๋ ฅ์ ์ธ ๋ถ„์œ„๊ธฐํŒ€์›๋“ค์˜ ์˜๊ฒฌ์„ ์ ๊ทน์ ์œผ๋กœ ๊ฒฝ์ฒญํ•˜๋ฉด์„œ ํ˜‘์—…์— ์žˆ์–ด ๊ธ์ •์ ์ธ ๋ถ„์œ„๊ธฐ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.์งˆ๋ฌธ์— ๋Œ€ํ•œ ์นœ์ ˆํ•œ ๋‹ต๋ณ€ํŒ€์›์ด ๋ชจ๋ฅด๋Š” ์ ์„ ๋ฌผ์–ด๋ดค์„ ๋•Œ, ์•„๋Š” ๋ฒ”์œ„ ๋‚ด์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๋ฉด์„œ ์ง€์‹์„ ๊ณต์œ ํ•˜๊ณ  ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.์ฑ…์ž„๊ฐ์„ ๊ฐ€์ง€๊ณ  ๋งก์€ ์—ญํ•  ์™„์ˆ˜๋‚ด๊ฐ€ ๋งก์€ ํŒŒํŠธ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ๋งˆ๋ฌด๋ฆฌํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๋งˆ๋ฌด๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. Problem: ๊ฐœ์„ ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์˜๊ฒฌ ์ „๋‹ฌ ๋ถ€์กฑ๋ฌธ์ œ์ : ๋‚ด ์˜๊ฒฌ์„ ํŒ€์›๋“ค์—๊ฒŒ ๋ช…ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.ํ•ด๊ฒฐ ๋ฐฉ์•ˆ:์˜๊ฒฌ์„ ์ž˜ ์ •๋ฆฌํ•ด์„œ ์ „๋‹ฌํ•˜๋Š” ์—ฐ์Šต์„ ๊พธ์ค€ํžˆ ํ•˜๊ณ , ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” ๊ฐ„๋‹จํ•œ ๋ฌธ์„œ๋‚˜ ์ž๋ฃŒ.. 2024. 12. 29.
๋‰ด์Šค ํ”ผ๋“œ ํ”„๋กœ์ ํŠธ_ํŒ€ KPT ํšŒ๊ณ  ๋‰ด์Šค ํ”ผ๋“œ ํ”„๋กœ์ ํŠธ Keep: ์ด๋ฒˆ ๊ณผ์ œ์—์„œ ์œ ์ง€ํ–ˆ์œผ๋ฉด ํ•˜๋Š” ๋ถ€๋ถ„์—…๋ฌด ๋ถ„๋‹ดํŒ€์› ๊ฐ„์˜ ์—ญ๋Ÿ‰์„ ํŒŒ์•…ํ•œ ๋’ค, ๋ฌด๋ฆฌํ•˜์ง€ ์•Š๋Š” ์„ ์—์„œ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์—…๋ฌด๋ฅผ ๋ถ„๋‹ดํ–ˆ๋‹ค.๊ฐ ํŒ€์›์ด ์ž์‹ ์˜ ์—ญํ• ์—์„œ ์„ฑ์žฅํ•˜๋ฉฐ ํ”„๋กœ์ ํŠธ ์™„์„ฑ์— ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.์˜์‚ฌ์†Œํ†ต๊ณผ ์ฝ”๋“œ ๋ฆฌ๋ทฐํ™”๋ฉด ๊ณต์œ ์™€ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ํ†ตํ•ด ๊ฐ์ž ๋งก์€ ๊ธฐ๋Šฅ ๊ตฌํ˜„์— ๋Œ€ํ•ด ์†Œํ†ตํ•˜๋ฉฐ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋‹ค.์„œ๋กœ์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด์„œ ๊ตฌํ˜„ ์˜๋„๋ฅผ ์ดํ•ดํ•˜๊ณ  ์˜๊ฒฌ์„ ๊ตํ™˜ํ•˜๋Š” ๊ณผ์ •์ด ๋„์›€์ด ๋งŽ์ด ๋˜์—ˆ๋‹ค.์„ค๊ณ„ ๋‹จ๊ณ„์˜ ์ค‘์š”์„ฑ์ดˆ๊ธฐ ์„ค๊ณ„ ๋‹จ๊ณ„์—์„œ ์˜ˆ์ƒ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ๋ฏธ๋ฆฌ ๊ณ ๋ คํ•˜๊ณ  ํŒ€์›๋“ค๊ณผ์˜ ํ˜‘์˜๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์„ค๊ณ„๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค.๊ตฌํ˜„ ๋‹จ๊ณ„์—์„œ์˜ ์–ด๋ ค์›€์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ๋†’์€ ์™„์„ฑ๋„๋ฅผ ์ด๋ฃฐ ์ˆ˜ ์žˆ์—ˆ๋‹ค.์ •๋ณด ๊ณต์œ ํŒ€ ๋‚ด์—์„œ ํ•„์š”ํ•œ ๊ธฐ์ˆ  ์ž๋ฃŒ๋‚˜ ์œ ์šฉํ•œ ํ•™์Šต ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณต์œ ํ•˜๋ฉฐ ์„œ๋กœ์˜ ์ง€์‹์„ ํ™•์žฅํ–ˆ.. 2024. 12. 27.
[ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ]์ผ์ • ๊ด€๋ฆฌ ์•ฑ Develop_ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ๊ณผ์ œ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ๋ฌธ์ œ ์ƒํ™ฉ์ผ์ • ์ƒ์„ฑ API๋ฅผ ์™„์„ฑํ•˜๊ณ  Postman์œผ๋กœ ํ…Œ์ŠคํŠธํ–ˆ์ง€๋งŒ 500 Internal Server Error๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.๋ฌธ์ œ ์›์ธ์ฝ”๋“œ์—์„œ @EntityListeners ์–ด๋…ธํ…Œ์ด์…˜์ด ์ž˜๋ชป๋œ ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.์ž˜๋ชป๋œ ์ฝ”๋“œ@EntityListeners(EntityListener.class)์ด๋กœ ์ธํ•ด EntityListener๊ฐ€ ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์•„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•@EntityListeners ์–ด๋…ธํ…Œ์ด์…˜์„ ์˜ฌ๋ฐ”๋ฅธ ํด๋ž˜์Šค์ธ AuditingEntityListener๋กœ ์ˆ˜์ •ํ–ˆ๋‹ค.์ˆ˜์ •๋œ ์ฝ”๋“œ@EntityListeners(AuditingEntityListener.class)์ˆ˜์ • ํ›„ Postman์œผ๋กœ ๋‹ค์‹œ ์š”์ฒญ์„ ๋ณด๋ƒˆ๊ณ , ์ •์ƒ์ ์œผ๋กœ ์ผ์ •์ด ์ƒ์„ฑ๋˜์—ˆ๋‹ค.๊ฒฐ๋ก  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์–ด๋…ธํ…Œ์ด.. 2024. 12. 19.
์ผ์ • ๊ด€๋ฆฌ ์•ฑ ๋งŒ๋“ค๊ธฐ ๊ณผ์ œ_KPT ํšŒ๊ณ  ์ผ์ • ๊ด€๋ฆฌ ์•ฑ ๋งŒ๋“ค๊ธฐ ๊ณผ์ œ Keep : ์ด๋ฒˆ ๊ณผ์ œ์—์„œ ์œ ์ง€ํ–ˆ์œผ๋ฉด ํ•˜๋Š” ๋ถ€๋ถ„์š”๊ตฌ์‚ฌํ•ญ ๊ผผ๊ผผํ•˜๊ฒŒ ์‚ดํ”ผ๊ธฐ๊ณผ์ œ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ฒ ์ €ํ•˜๊ฒŒ ๋ถ„์„ํ•˜๊ณ , ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค.๊ณผ์ œ์˜ ์ง„ํ–‰ ์‚ฌํ•ญ์„ ๊พธ์ค€ํžˆ ๊ธฐ๋กํ•˜๊ธฐNotion์„ ํ™œ์šฉํ•ด์„œ ๊ณผ์ œ ์ง„ํ–‰ ์ƒํ™ฉ, ๊ณ ๋ฏผํ–ˆ๋˜ ๋ถ€๋ถ„, ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ์‚ฌ๋ก€ ๋“ฑ์„ ์ •๋ฆฌํ•˜๋ฉด์„œ ์ง„ํ–‰ํ–ˆ๋‹ค.๊ธฐ๋ก์ด ์ถ”ํ›„ ๋ณต์Šต๊ณผ ํ•™์Šต์— ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™๋‹ค.์–ด๋ ค์šด ๋ถ€๋ถ„์—๋„ ์ผ๋‹จ ๋„์ „ํ•˜๊ธฐ์•„์ง Spring์˜ ๊ธฐ๋ณธ ๊ฐœ๋…์ด ์™„๋ฒฝํ•˜๊ฒŒ ์žกํžˆ์ง€ ์•Š์•˜์ง€๋งŒ, ๊ณผ์ œ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์‹ค์Šตํ•˜๊ณ  ์ดํ•ด๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.์ง์ ‘ ๋ถ€๋”ชํžˆ๋ฉด์„œ ํ•™์Šตํ•˜๋Š” ๊ณผ์ •์ด ํšจ๊ณผ์ ์ด์—ˆ๋‹ค.๊ฐ•์˜ ์‹ค์Šต ์ฝ”๋“œ ์ ๊ทน ํ™œ์šฉํ•˜๊ธฐ๊ฐ•์˜ ์‹ค์Šต ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด์„œ ๊ณผ์ œ๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค.๋‹จ์ˆœํžˆ Ctrl+C, Ctrl+V๋ฅผ ํ•˜์ง„ ์•Š์•˜๊ณ  ์ง์ ‘ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ ์ฝ”๋“œ์˜ ํ๋ฆ„๊ณผ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜.. 2024. 12. 10.
[ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ]์ผ์ • ๊ด€๋ฆฌ ์•ฑ ๊ณผ์ œ_ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ๊ณผ์ œ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ๋ฌธ์ œ ์ƒํ™ฉIntelliJ์—์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ค‘, import๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ์ฝ”๋“œ์˜ ๋งจ ์œ„๋กœ ์ถ”๊ฐ€๋˜์ง€ ์•Š๊ณ  ์ž‘์„ฑ ์ค‘์ธ ํ•ด๋‹น ์ค„์— import๋ฌธ์ด ์ถ”๊ฐ€๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.๋ฌธ์ œ ์›์ธ๋ฌธ์ œ์˜ ์ •ํ™•ํ•œ ์›์ธ์€ ํŒŒ์•…ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.ํ•˜์ง€๋งŒ import ์‹œ๋„ ์‹œ IntelliJ ์šฐ์ธก ํ•˜๋‹จ์— IDE Error ๋ฉ”์‹œ์ง€๊ฐ€ ์ง€์†์ ์œผ๋กœ ๋‚˜ํƒ€๋‚œ ๊ฒƒ์„ ๋ณด์•„ IntelliJ ์ž์ฒด์˜ ๋ฌธ์ œ๋กœ ํŒ๋‹จํ–ˆ๋‹ค.์—ฌ๋Ÿฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•˜๋Š” ๊ณผ์ •์—์„œ ์„ค์ •์ด ๊ผฌ์˜€๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ๋ณ€๊ฒฝ์ด ์ด๋ฃจ์–ด์ง„ ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•˜๊ณ  ์žˆ๋‹ค.ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•ํŠœํ„ฐ๋‹˜๊ณผ ํ•จ๊ป˜ ๋‹ค์–‘ํ•œ ์‹œ๋„IntelliJ ์„ค์ • ๋ณ€๊ฒฝ์บ์‹œ ์‚ญ์ œ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์„ ์‹œ๋„ํ•ด๋„ ์—ฌ์ „์น˜ IDE Error ๋ฉ”์‹œ์ง€๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.์ตœ์ข… ํ•ด๊ฒฐIntelliJ๋ฅผ ์™„์ „ํžˆ ์‚ญ์ œํ•œ ํ›„ ์žฌ์„ค์น˜ ์ง„ํ–‰์žฌ์„ค์น˜ ํ›„ ๊ธฐ๋ณธ.. 2024. 12. 10.