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

๐Ÿ“• Spring Framework/Spring Project45

ใ€ŒํŒŒ์ผ ์—…๋กœ๋“œ/๋‹ค์šด๋กœ๋“œ ๋ฐ ํ…Œ์ŠคํŠธใ€ ์ด๋ฒˆ ์ฃผ์— Sonarqube๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ์ ์šฉํ•˜๊ธฐ ์ „ ์ „์ฒด์ ์ธ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ๊ฒ€ํ†  ์ค‘์ด์—ˆ๋‹ค. ๋นผ๋†“์€ ํ•„์ˆ˜์ ์ธ ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ์ƒํ’ˆ ํ…Œ์ด๋ธ”์—๋Š” ์ด๋ฏธ์ง€ ํŒŒ์ผ ์ด๋ฆ„ ์นผ๋Ÿผ์ด ์กด์žฌํ•˜๋Š”๋ฐ ์ด๋ฅผ ๊นœ๋ฐ•ํ–ˆ๋˜ ๊ฒƒ์ด๋‹ค. ํŒŒ์ผ ์—…๋กœ๋“œ, ๋‹ค์šด๋กœ๋“œ ๊ธฐ๋Šฅ์„ ๊ธ‰ํ•˜๊ฒŒ ์ ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , ์ด ๊ณผ์ •์„ ๊ธฐ๋ก์œผ๋กœ ์ž‘์„ฑํ•˜๊ฒ ๋‹ค. ํŒŒ์ผ ์—…๋กœ๋“œ ํŒŒ์ผ์„ ๋“ฑ๋กํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ํƒ€์ž…์œผ๋กœ ์Šคํ”„๋ง์—์„œ๋Š” MultipartFile ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํŒŒ์ผ ์—…๋กœ๋“œ ๋ฐ ๋‹ค์šด๋กœ๋“œ๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ํŒŒ์ผ ์—…๋กœ๋“œ๋ฅผ ์ด์šฉํ•˜๋Š” ๋‚ด API๋Š” ์ƒํ’ˆ ์ถ”๊ฐ€์™€ ์ˆ˜์ •์ด๋‹ค. ๋จผ์ € ํŒŒ์ผ ์—…๋กœ๋“œํ•  ์œ„์น˜๋ฅผ ๋‚ด๋ถ€ ๊ฒฝ๋กœ์™€ ์™ธ๋ถ€ ๊ฒฝ๋กœ์ค‘ ๊ณ ๋ฏผ์„ ํ–ˆ๋‹ค. ์ €๋ฒˆ ํ”„๋กœ์ ํŠธ ๋•Œ๋Š” ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€๋กœ ์ง€์ •ํ–ˆ์ง€๋งŒ, ์ด๋ ‡๊ฒŒ ํ•˜๊ฒŒ ๋˜๋ฉด ๋ฐฐํฌ ์‹œ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ๋ฅผ ๋ชป ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. .. 2022. 7. 1.
ใ€Œ์ปจํŠธ๋กค๋Ÿฌ ๋‹จ์œ„ ํ…Œ์ŠคํŠธใ€ https://github.com/GroovyArea/MyChickenBreastShop GitHub - GroovyArea/MyChickenBreastShop: ChikenBreastShop API with Spring boot ChikenBreastShop API with Spring boot. Contribute to GroovyArea/MyChickenBreastShop development by creating an account on GitHub. github.com ์ €๋ฒˆ ์ฃผ์— ์ฒ˜์Œ์œผ๋กœ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ์ ์šฉ์‹œํ‚ค๋ฉฐ Spring REST Docs๋ฅผ ์ด์šฉํ•ด ์ ์šฉ์‹œ์ผฐ๋‹ค. ์ฒ˜์Œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋‹ค ๋ณด๋‹ˆ ๋ฏธํกํ•œ ๋ถ€๋ถ„์ด ์ข€ ์žˆ์—ˆ๋‹ค. ๊ทธ ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•ด๊ฐ€๋ฉฐ ๋‹ค๋ฅธ ์ปจํŠธ๋กค๋Ÿฌ์˜ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€๋กœ ์ž‘์„ฑ.. 2022. 6. 23.
ใ€Œํ…Œ์ŠคํŠธ ์ฝ”๋“œ & Spring REST Docsใ€ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋Š” ์™„์„ฑ์ด ๋˜์—ˆ๋‹ค. ์ด์ œ๋Š” ์„ธ๋ถ€์ ์ธ ๋””ํ…Œ์ผ์— ์‹ ๊ฒฝ์„ ์“ฐ๋ฉฐ ๋ฆฌํŒฉํ„ฐ๋ง๊ณผ ๊ทธ์— ํ•„์š”ํ•œ ๊ฐœ๋… ์ •๋ฆฌ๋ฅผ ํ•˜๋ฉฐ ํ”„๋กœ์ ํŠธ์— ์ ์šฉ์‹œํ‚ค๊ณ  ์žˆ๋‹ค. REST API๋ฅผ ์ฒ˜์Œ ์„ค๊ณ„ํ•ด ๋ณด์•˜๋Š”๋ฐ, ๋ถ€์กฑํ•œ ์ ์ด ๋งŽ์•˜์ง€๋งŒ ์‹ ์„ ํ•œ ๊ฒฝํ—˜์ด๊ณ  ์งง์€ ๊ธฐ๊ฐ„ ๋‚ด์— ๋ฐฐ์šด ๊ฒƒ์ด ๋งŽ์€ ์„ค๊ณ„ ๊ณผ์ •์ด์—ˆ๋‹ค. API๋ฅผ ์„ค๊ณ„ํ•˜๋ฉด ๊ทธ์— ๋งž๋Š” ๋ช…์„ธ๊ฐ€ ํ•„์š”ํ•œ๋ฐ, ๋ณดํ†ต Swagger๋‚˜ Spring REST Docs ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. Swagger๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์• ๋…ธํ…Œ์ด์…˜์„ ์ด์šฉํ•ด ํŽธํ•˜๊ฒŒ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•  ์ˆœ ์žˆ์ง€๋งŒ, ํ”„๋กœ์ ํŠธ์˜ ํ™•์‹ค์„ฑ๊ณผ ์ •ํ™•์„ฑ์„ ๋’ท๋ฐ›์นจํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ์ด ํ•„์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— Spring REST Docs๋ฅผ ์ด์šฉํ•˜๊ธฐ๋กœ ์ƒ๊ฐํ•˜๋ฉฐ ์ ์šฉํ•ด๋ณด์•˜๋‹ค. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ํฌ๊ฒŒ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์™€ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ๋‹ค. ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ.. 2022. 6. 20.
OutBox Pattern & Saga Pattern & Transaction ์ง€๋‚œ๋ฒˆ ํฌ์ŠคํŒ…์„ ์ดํ›„๋กœ 3์ผ๊ฐ„ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์— ๊ด€ํ•œ ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉฐ ๋ฆฌํŒฉํ„ฐ๋ง์„ ์ง„ํ–‰ํ–ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ์˜ ํŠธ๋žœ์žญ์…˜์˜ ๊ณ ๋ ค๋„ ์ถฉ๋ถ„ํžˆ ์ค‘์š”ํ•œ ์„ค๊ณ„ ๊ฐ™๋‹ค. ๊ทธ ๋ฆฌํŒฉํ„ฐ๋ง ๊ณผ์ •์„ ์ •๋ฆฌํ•ด๋ณด๊ฒ ๋‹ค. https://sweeeetgoguma.tistory.com/entry/%E3%80%8COutBox-Pattern%E3%80%8D-%ED%99%9C%EC%9A%A9 ใ€ŒOutBox Patternใ€ ํ™œ์šฉ https://github.com/GroovyArea/MyChickenBreastShop/wiki/Version-1 GitHub - GroovyArea/MyChickenBreastShop: ChikenBreastShop API with Spring boot ChikenBreastShop API with Spring boot... 2022. 6. 13.
ใ€ŒOutBox Patternใ€ ํ™œ์šฉ https://github.com/GroovyArea/MyChickenBreastShop/wiki/Version-1 GitHub - GroovyArea/MyChickenBreastShop: ChikenBreastShop API with Spring boot ChikenBreastShop API with Spring boot. Contribute to GroovyArea/MyChickenBreastShop development by creating an account on GitHub. github.com ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ์ž‘์„ฑํ•œ Wiki ๋ฌธ์„œ์—์„œ ๊ณ„ํšํ•œ ๊ธฐ๋Šฅ์€ ๋‹ค ๊ตฌํ˜„์ด ๋˜์—ˆ๋‹ค. ๊ฒŒ์‹œํŒ, ๋ฐฐ์†ก, ์ฑ„ํŒ… ๊ธฐ๋Šฅ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ๋ถ€์ˆ˜์ ์ด๋ฏ€๋กœ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์–•๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๊ธฐ๋Šฅ ํ•˜๋‚˜๋ฅผ ๊ตฌ์ฒด์ ์œผ๋กœ ๊ณ ๋ คํ•˜๋ฉฐ ๊ตฌํ˜„ํ•˜๋Š” .. 2022. 6. 10.
2022.06.07 ใ€Œํ”„๋กœ์ ํŠธ ์ค‘๊ฐ„ ์ ๊ฒ€ใ€ ์ด๋ฒˆ 4์ผ ๊ฐ„ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง‘์ค‘ ์žˆ๊ฒŒ ํ•˜๋А๋ผ ๋ธ”๋กœ๊ทธ ๊ธ€ ์ž‘์„ฑ๋„ ๋ชปํ•˜๊ณ  ์ฝ”ํ…Œ ์ค€๋น„๋„ ์ œ๋Œ€๋กœ ๋ชปํ–ˆ๋‹ค ใ…œใ…œ ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ์—๋Š” ์†๋„์— ๋Œ€ํ•œ ๋ฐ˜์„ฑ์„ ๋งŽ์ด ํ–ˆ์—ˆ๋Š”๋ฐ, ์‹œ๊ฐ„์ด ์ง€๋‚˜๊ณ  ํ”„๋กœ์ ํŠธ์˜ ํ‹€์ด ์žกํž์ˆ˜๋ก ๊ทธ ๋ฐ˜์„ฑ์€ ํฐ ์˜ค์‚ฐ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ํ€„๋ฆฌํ‹ฐ ์žˆ๊ณ , ํด๋ฆฐ ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋ฉด ๊ฝค๋‚˜ ๊ณต๋“ค์ด๋ฉฐ ์‹œ๊ฐ„์„ ํˆฌ์žํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค. ์ฆ‰, ๋” ํšจ์œจ์ ์ธ ์‹œ๊ฐ„ ๋ถ„๋ฐฐ๊ฐ€ ๊ด€๊ฑด์ด๋‹ค. ์ด์ œ ํ”„๋กœ์ ํŠธ์—์„œ ๊ณ„ํšํ•œ ๊ธฐ๋Šฅ์€ ๊ฑฐ์˜ ๊ตฌ์„ฑ์ด ๋œ ์ƒํ™ฉ์ด๋‹ค. ๊ฑฐ์ง„ 1๋‹ฌ์ด ๊ฑธ๋ ธ๋‹ค. ๊ณ„ํšํ•œ ๊ฒƒ์— ๋น„ํ•ด ๋Šฆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๋ณธ๊ฒฉ์ ์ธ ๋ฆฌํŒฉํ„ฐ๋ง์„ ์ ์šฉํ•ด๋ณผ ์ƒ๊ฐ์ด๋‹ค. ์ฒ˜์Œ์œผ๋กœ ํ˜ผ์ž์„œ ์ œ๋Œ€๋กœ ๋œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ์• ์ฐฉ์ด ๊ฐ€๊ธฐ๋„ ํ•œ๋‹ค. ์ด์ œ ๋ฐ˜๋„ ์•ˆ ์™”๊ณ , ๊ฐˆ ๊ธธ์ด ํ—˜๋‚œํ•  ํ…Œ์ง€๋งŒ ์ด๋ค„๋ณด์ž~ ์ง€๋‚œ 4์ผ ๊ฐ„ ๊ตฌํ˜„ ๋ชฉ๋ก ์นด์นด์˜ค ํŽ˜์ด REST AP.. 2022. 6. 7.
2022.06.02 ใ€ŒDB ๋™์‹œ์„ฑ ๋ฌธ์ œใ€ ์ž๋ฐ” ๊ธฐ๋ฐ˜ ์›น ํ”„๋กœ๊ทธ๋žจ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋™์‹œ์„ฑ ๊ด€๋ จ ๋ฌธ์ œ๋ฅผ ์ž˜ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋“ค์—ˆ๋‹ค. ์ด๋ฒˆ์— ๋‚ด๊ฐ€ ํ•˜๋Š” ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ๊ทธ ์ด์Šˆ๊ฐ€ ๋”ฑ ํ„ฐ์กŒ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ช‡ ๋งŒ ๋ช…์ด ํ•œ์ •๋œ ์žฌ๊ณ ์˜ ์ƒํ’ˆ์„ ์ฃผ๋ฌธํ•˜๋ ค๊ณ  ํ•  ๋•Œ? ์ˆ˜๋งŽ์€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋Š” ๋ฐ์ดํ„ฐ์˜ ์žฌ๊ณ ๋Ÿ‰์„ ์กฐํšŒํ•˜๋ฉฐ ์žฌ๊ณ ๊ฐ€ ๋–จ์–ด์กŒ์œผ๋ฉด ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋ฉด ๋œ๋‹ค. ํ•˜์ง€๋งŒ ๋™์‹œ์— ์ ‘๊ทผํ•˜๋ฉด? ์ด๊ฑฐ ๋‚œ๊ฐํ•˜๋‹ค. ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ณ ์ฐฐ์„ ์ž‘์„ฑํ•˜๊ฒ ๋‹ค. DB ๋™์‹œ์„ฑ ๋ฌธ์ œ ๋™์‹œ์— DB๋ฅผ ์กฐํšŒํ•  ๋•Œ๊ฐ€ ๋ฌธ์ œ์ด๋‹ค. ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” DBMS๋Š” Mysql Mysql์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํŠธ๋žœ์žญ์…˜์˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์œผ๋กœ Level 2 Repeatable Read๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ์–ธ๋‘ ์˜์—ญ์„ ํ†ตํ•œ ๋‹ค์–‘ํ•œ ๋ฒ„์ „ ๋ณ„ MVCC๋ฅผ ํ†ตํ•ด ๋ฒ„์ „์— ๋งž๋Š” ๊ฐ’์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ชจ๋“  .. 2022. 6. 2.
2022.06.01 ใ€Œ๊ฒฐ์ œ API - Ver.2ใ€ ์ง€๋‚œ๋ฒˆ ํฌ์ŠคํŒ…์— ์ด์–ด ์ž‘์„ฑํ•˜๊ฒ ๋‹ค! https://sweeeetgoguma.tistory.com/entry/20220529-%E3%80%8C%EA%B2%B0%EC%A0%9C-API%E3%80%8D 2022.05.29 ใ€Œ๊ฒฐ์ œ APIใ€ ์žฅ๋ฐ”๊ตฌ๋‹ˆ crud ์ž‘์—…ํ•œ ๊ฒƒ์„ ์ˆ˜์ • ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ์ด๋ฒˆ ์ฃผ์— ๋๋‚ด๊ณ  ๋‚˜์„œ, ๋’ค๋Šฆ๊ฒŒ ๊ฒฐ์ œ API๋ฅผ ์„ค๊ณ„ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ์นด์นด์˜ค ํŽ˜์ด API๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•ด๋ณด๋ ค๊ณ  ํ•˜๋Š”๋ฐ, ์ƒ๊ฐ๋งŒํผ ์‰ฝ์ง€ ์•Š์•˜๋‹ค. ์–ด๋””์„œ ๋ณธ ๊ฑด๋ฐ sweeeetgoguma.tistory.com ์นด์นด์˜คํŽ˜์ด Rest API๋ฅผ ์ด์šฉํ•ด ๊ฒฐ์ œ ์ค€๋น„์— ํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ์™„๋ฃŒํ–ˆ๋‹ค. ์นด์นด์˜ค ํŽ˜์ด ํ”„๋กœ์„ธ์Šค์— ๋”ฐ๋ผ ์ค€๋น„์™€ ๊ฒฐ์ œ ๋ฐ ์Šน์ธ์„ ์œ„ํ•œ ํ†ต์‹  ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค. ์ด ๊ณผ์ • ์†์—์„œ ์ˆ˜๋งŽ์€ ์‚ฝ์งˆ์ด ์žˆ์—ˆ๋‹ค. ์‚ฌ์‹ค ์‚ฝ์งˆ์ด๋ผ๊ธฐ๋ณด๋‹ค.. 2022. 6. 1.
2022.05.29 ใ€Œ๊ฒฐ์ œ APIใ€ ์žฅ๋ฐ”๊ตฌ๋‹ˆ crud ์ž‘์—…ํ•œ ๊ฒƒ์„ ์ˆ˜์ • ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ์ด๋ฒˆ ์ฃผ์— ๋๋‚ด๊ณ  ๋‚˜์„œ, ๋’ค๋Šฆ๊ฒŒ ๊ฒฐ์ œ API๋ฅผ ์„ค๊ณ„ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ์นด์นด์˜ค ํŽ˜์ด API๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•ด๋ณด๋ ค๊ณ  ํ•˜๋Š”๋ฐ, ์ƒ๊ฐ๋งŒํผ ์‰ฝ์ง€ ์•Š์•˜๋‹ค. ์–ด๋””์„œ ๋ณธ ๊ฑด๋ฐ ๋งŒ๋“ค์–ด์ง„ API๋ฅผ ๊ฐ€์ ธ์™€์„œ ์“ฐ๋Š” ๊ฒƒ๋„ ๋Šฅ๋ ฅ์ด๋ผ๊ณ ..ใ…‹ใ…‹ ๊ทธ๋ž˜๋„ ํ•ด์•ผ์ง€ ์–ด์ฉŒ๊ฒ ๋‚˜. ์นด์นด์˜ค ํŽ˜์ด API ๋ฌธ์„œ๋ฅผ ๋ณด๋‹ˆ ๋˜๊ฒŒ ๋‹ค์–‘ํ•œ API๋ฅผ ์†Œ๊ฐœํ•ด ๋†“์•˜๋‹ค. ๊ฒฐ์ œ ์š”์ฒญ๋„ ๋ณด์•ˆ์ƒ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์š”์ฒญ์„ ํ•ด์•ผ ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋„˜๊ฒจ ์ฃผ๊ณ  ๋ฐ›๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋„ ๊ต‰์žฅํžˆ ๋งŽ๋‹ค. ์‹ค๊ฑฐ๋ž˜๋ฅผ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ API๋ผ ํ™•์‹คํžˆ ๋‹ค๋ฅด๊ธด ํ•˜๋‹ค. ๊ฐœ์ธ์ ์ธ ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€์—์„œ ํ…Œ์ŠคํŠธ ๊ฒฐ์ œ๋ฅผ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๋ฆฌ๋Š” ์ž‘์—…์€ ์ฐธ ๊ณจ์น˜ ์•„ํ”ˆ ์ผ์ธ ๊ฒƒ ๊ฐ™๋‹ค. ์ผ๋‹จ ๊ฒฐ์ œ ์š”์ฒญ ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค. ๋‚ด๊ฐ€ ์„ค๊ณ„ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ํฌ๊ฒŒ ๋ณด๋ฉด ๋‘ ๊ฐ€์ง€ ์ข….. 2022. 5. 29.
2022.05.28 ใ€Œ์ฟ ํ‚ค ์ˆ˜์ •ใ€ ์žฅ๋ฐ”๊ตฌ๋‹ˆ API๋ฅผ ์ฒ˜์Œ ๊ตฌํ˜„ํ•ด๋ณด๋Š” ์ฟ ํ‚ค๋กœ ํž˜๋“ค๊ฒŒ ์งฐ์—ˆ๋‹ค. ์˜ค๋Š˜ ์ฃผ๋ฌธ API๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ์นด์นด์˜คํŽ˜์ด ๊ด€๋ จ API ํƒ์ƒ‰ ๋ฐ ๊ตฌ์ƒ์„ ํ•˜๋˜ ๋„์ค‘ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ๊ฒฐ์ œํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋– ์˜ฌ๋ ธ๋‹ค. ๋‹ค์‹œ ํ•œ๋ฒˆ ์žฅ๋ฐ”๊ตฌ๋‹ˆ API ๋™์ž‘์ด ์ž˜ ๋˜๋Š”์ง€ ํฌ์ŠคํŠธ๋งจ์œผ๋กœ ํ™•์ธ์„ ํ•˜๋˜ ๋„์ค‘ ์ด์ƒํ•œ ์ฟ ํ‚ค ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.. ๋‹ค์‹œ ํ•œ๋ฒˆ ์ ๊ฒ€์„ ํ†ตํ•ด ์ฝ”๋“œ ์ˆ˜์ •์„ ํ•˜๋ฉฐ ๋‹จ๋ฒˆ์— ์™„๋ฒฝํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค๋Š” ์ž๋งŒ์‹ฌ ๋А๊ผˆ๋˜ ์ž์‹ ์— ๋ฐ˜์„ฑ์„ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค..ใ…Žใ…Ž ๋ฌธ์ œ์  ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ƒํ’ˆ ์ถ”๊ฐ€๊ฐ€ ๋˜์งˆ ์•Š๋Š”๋‹ค ์ฟ ํ‚ค๊ฐ€ ๋‹ค์ค‘์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค => ์ด ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์ œ์ผ ์ปธ๋‹ค ๊ธฐ์กด ์ฝ”๋“œ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ฟ ํ‚ค๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ response ๊ฐ์ฒด์— ์‚ฝ์ž…ํ•œ๋‹ค. ๋ฌธ์ œ ์ƒˆ๋กœ์šด ์ฟ ํ‚ค๊ฐ€ ๊ฐ™์€ Key๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์ €์žฅ๋œ๋‹ค. => ๋‚ด๊ฐ€ ์›ํ•œ ๊ฑด ๊ธฐ์กด ์ฟ ํ‚ค๋ฅผ .. 2022. 5. 28.
2022.05.26 ใ€ŒํŠธ๋ž˜ํ”ฝ์ด ๋ชฐ๋ ธ์„ ๊ฒฝ์šฐใ€ ์ด๋ฉ”์ผ์„ ํ†ตํ•ด ์ธ์ฆ ๋ฒˆํ˜ธ๋ฅผ ์ „์†กํ•˜๋Š” ๋ฐฉ์‹์€ ๋งค์šฐ ๋А๋ฆฌ๋‹ค. ์„œ๋ฒ„ ์‚ฌ์šฉ์ž๊ฐ€ ๋Š˜์–ด๋‚ ์ˆ˜๋ก ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์ด ๋ชฐ๋ ค ์ธ์ฆ ๋ฒˆํ˜ธ๋ฅผ ์ „์†กํ•˜๋Š” ์‹œ๊ฐ„์ด ๋ฌด์ง„์žฅ ๋Š˜์–ด๋‚  ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌ๋ฉด ์•ˆ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ์ฐพ์•„๋ณด์•˜๋‹ค. ํŠธ๋ž˜ํ”ฝ์ด ๋ชฐ๋ ธ์„ ๊ฒฝ์šฐ์—๋Š” ์–ด๋–ค ์‹์œผ๋กœ ํ•ด๊ฒฐ์„ ํ•˜๋Š”์ง€? ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ ๋ฐฉ์‹์ด ์žˆ๋‹ค. ๋™๊ธฐ๋Š” ์ฒซ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์™„๋ฃŒ๋˜์–ด์•ผ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๋กœ ๋„˜์–ด๊ฐ€๋Š” ๋ฐฉ์‹์ด๊ณ , ์™„๋ฃŒ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์š”์ฒญํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋น„๋™๊ธฐ ๋ฐฉ์‹์ด๋‹ค. ์ด๋ฉ”์ผ ์ „์†ก์— ์ด ๋น„๋™๊ธฐ ๋ฐฉ์‹์„ ์ ์šฉํ•ด ๋ณด๊ณ ์ž ํ•œ๋‹ค. Async Config ์Šคํ”„๋ง์—์„œ๋Š” @Async๋ฅผ ํ†ตํ•ด ๋น„๋™๊ธฐ ๋ฐฉ์‹์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. configuration์„ ํ†ตํ•ด ์Šค๋ ˆ๋“œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ปค์Šคํ„ฐ ๋งˆ์ด์ง• ์‹œ์ผฐ๋‹ค. Async ์ ์šฉ ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๊ธธ ๋ฐ”๋ผ๋Š” ๋ฉ”์„œ๋“œ์— ์• ๋…ธํ…Œ์ด์…˜์„ ์ .. 2022. 5. 26.
2022.05.25 ใ€ŒEmail ์ธ์ฆใ€ ์—ด์‹ฌํžˆ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‹ค๊ฐ€ ์ดˆ๊ธฐ ๊ตฌ์ƒํ•œ wiki๋ฅผ ๋‹ค์‹œ ๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. ํšŒ์›๊ฐ€์ž… ์‹œ ์ด๋ฉ”์ผ api๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋Š”๋ฐ ๊ทธ๊ฑธ ๊นŒ๋จน์—ˆ๋‹ค.. ๊ทธ๋ž˜์„œ ํšŒ์›๊ฐ€์ž…์„ ๋‹ค์‹œ ๊ฑด๋“œ๋ฆฌ๊ฒŒ ๋˜์—ˆ๋‹ค. Java์˜ MailSender ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SMTP ๊ตฌ๊ธ€ ์ด๋ฉ”์ผ๋กœ ์ด๋ฉ”์ผ ์ธ์ฆ ๋ฒˆํ˜ธ๋ฅผ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ์ด๋ฉ”์ผ๋กœ ๋ณด๋‚ด์ฃผ๋„๋ก ์„ค๊ณ„ํ•˜๊ณ  ์ธ์ฆ ๋ฒˆํ˜ธ๋ฅผ redis DB์— ์ €์žฅํ•˜์—ฌ ๋น„๊ตํ•˜๊ณ  ํšŒ์›๊ฐ€์ž…์„ ์ด๋ฃจ๊ฒŒ ํ•  ๊ฒƒ์ด๋‹ค. Mail Sender // Mail implementation 'org.springframework.boot:spring-boot-starter-mail' ๋จผ์ € ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค. Application.yml ์ง€๊ธˆ๊นŒ์ง€ Properties ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ์ด๋ฒˆ ๊ธฐํšŒ์— yaml์„ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค. ์ด์œ ๋Š” ์ธ.. 2022. 5. 25.
2022.05.24 ใ€Œ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง Ver.2ใ€ ์ฃผ๋งˆ๋‹ค ๋ฆฌํŒฉํ„ฐ๋ง ๋ฐ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ํ•˜๋Š” ๋ธŒ๋žœ์น˜๋ฅผ ๋”ฐ ์„ค๊ณ„ํ•˜๋ฉฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ ์ค‘์ด๋‹ค. ์ด๋Ÿฐ ์‹์œผ๋กœ ์ฃผ๋งˆ๋‹ค ๋ฆฌํŒฉํ„ฐ๋ง์„ ํ•˜๋‹ˆ๊นŒ ํ™•์‹คํžˆ ์ฝ”๋“œ๊ฐ€ ๊น”๋”ํ•ด์ง€๋Š” ๊ฑธ ๋А๋‚€๋‹ค. ์˜ค๋Š˜ ์•„์นจ๋ถ€ํ„ฐ ์ง„ํ–‰ํ•œ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง์€ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋”ฐ์ง€๋Š” ๊ฒƒ์€ ๋ฌผ๋ก ์ด๊ฑฐ๋‹ˆ์™€ ์–ด๋ ค์šด ๋“ฏํ•˜๋ฉด์„œ๋„ ์ƒˆ๋กœ์šด ๊ฐœ๋…์„ ๋„์ž…ํ•ด์„œ ์ง„ํ–‰ํ•˜๋‹ˆ ๋‚˜๋ฆ„ ๋ณด๋žŒ์ฐผ๋˜ ๋ฆฌํŒฉํ„ฐ๋ง์ด์—ˆ๋‹ค. ์ง๋ฉดํ–ˆ๋˜ ๋ฌธ์ œ๋“ค์„ ๋‚˜์—ดํ•˜๋ฉฐ ์ •๋ฆฌ๋ฅผ ํ•œ๋ฒˆ ํ•ด๋ณด๊ฒ ๋‹ค. ์ธ์ฆ & ์ธ๊ฐ€ ์ฑ…์ž„ ๋ถ„๋ฆฌ ๋‚˜๋Š” ์ธ์ฆ, ์ธ๊ฐ€๋ฅผ ์ธํ„ฐ์…‰ํ„ฐ๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค. ์ธ์ฆ์€ ํ† ํฐ ๊ฒ€์ฆ, ์ธ๊ฐ€๋Š” ์—๋„ˆํ…Œ์ด์…˜ ๋ฐ ํ† ํฐ ๊ฒ€์ฆ์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค. ๊ธฐ์กด ์ฝ”๋“œ : ์ธํ„ฐ์…‰ํ„ฐ์˜ preHandle ๋ฉ”์„œ๋“œ ์•ˆ์— ๋‘ ๊ฐœ์˜ ๋กœ์ง์ด ๋™์‹œ์— ๋“ค์–ด์žˆ๋‹ค. ํ† ํฐ ๊ฒ€์ฆ + ์—๋„ˆํ…Œ์ด์…˜ ๊ฒ€์ฆ => ์ฑ…์ž„์ด ๋งŽ๋‹ค -> ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ต๋‹ค. ํ•ด๊ฒฐ : ์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ๋‚˜๋ˆ„์–ด ๋ถ„๋ฆฌํ–ˆ๋‹ค. @Override .. 2022. 5. 24.
2022.05.22 ใ€ŒShopping Cart API [Ver.2]ใ€ ์–ด์ œ๋ถ€ํ„ฐ ์žฅ๋ฐ”๊ตฌ๋‹ˆ API ๊ตฌํ˜„์— ๋Œ€ํ•ด ๊ณ ๋ฏผ์„ ์ •๋ง ๋งŽ์ด ํ–ˆ๋‹ค. ๋‹น์—ฐํžˆ DB๋ฅผ ์ด์šฉํ•˜๋‹ค ์ฟ ํ‚ค๋กœ ๊ตฌํ˜„ํ•ด๋ณด๋ ค๋Š” ์‹œ๋„๊ฐ€ ์ฒ˜์Œ์ด๋ผ ๋” ๊ฐœ๋…์ด ๋‚ฏ์„ค์—ˆ๋‹ค. ์ถ”๊ฐ€ ๋ฐ ์กฐํšŒ๋Š” ๋๋‚ฌ๋Š”๋ฐ, ์˜ค๋Š˜ ์•„์นจ ๋‹ค์‹œ ๋ณด๋‹ˆ ์ถ”๊ฐ€์—์„œ ์ด์ƒํ•œ ๋กœ์ง์ด ์žˆ์—ˆ๊ณ , ์ค‘๋ณต๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ์–ด์„œ ์ˆ˜์ •์„ ํ•˜๊ณ  ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ˆ˜์ • ๋ฐ ์‚ญ์ œ API๋ฅผ ์ž‘์„ฑํ•ด๋ณด์•˜๋‹ค. API๋ฅผ ์„ค๊ณ„ํ•˜๋ฉด์„œ ๋ฌธ์ œ์ ๋“ค๊ณผ ํ™•์‹คํžˆ ์•Œ๊ฒŒ ๋œ ์ ์„ ์ •๋ฆฌํ•ด๋ณด๊ฒ ๋‹ค~ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์กฐํšŒ ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ ์กฐํšŒํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๊ณง ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋“ค์–ด์žˆ๋Š” ์ƒํ’ˆ ๋ชฉ๋ก์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป๊ฒ ๋‹ค๋Š” ๊ฒƒ. ๊ทธ ์ƒํ’ˆ ๋ชฉ๋ก์˜ ๊ฐ์ฒด๋ฅผ ์„ค๊ณ„ํ–ˆ๋‹ค. public class CartItemDTO { private final Integer productNo; private Integer productStock; private final String prod.. 2022. 5. 22.
2022.05.21 ใ€Œ Shopping Cart API ๋งŒ๋“ค๊ธฐ ใ€ ์–ด์ œ๋ถ€๋กœ ์ธ์ฆ, ์ธ๊ฐ€ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค. ์ง„์งœ ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค. ์†๋„๋ฅผ ์ข€ ๋” ๋‚ผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ์˜ค๋Š˜๋ถ€ํ„ฐ๋Š” ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ ๋งŒ๋“ค๊ฑด๋Œ€ ์ด๋ฒˆ์—๋Š” DB๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. ์ฟ ํ‚ค๋ฅผ ์ด์šฉํ•ด ๋ณผ ์ƒ๊ฐ์ด๋‹ค. ์ฟ ํ‚ค์— ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ด€๋ จ ์ •๋ณด๋ฅผ ๋„ฃ์–ด์„œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ตํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ•œ ๋•Œ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋“ค์–ด๊ฐ€๋Š” ๋ฐ์ดํ„ฐ๋„ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ–ˆ๋Š”๋ฐ ๋ณดํ†ต ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋Š” ์ฟ ํ‚ค๋‚˜ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ด์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ๋‚˜๋Š” ์˜จ์ „ํ•œ API๋กœ๋งŒ ๊ตฌํ˜„์„ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฟ ํ‚ค๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„ํ•ด๋ณผ ์ƒ๊ฐ์ด๋‹ค. ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ• ๊นŒ? ์ผ๋‹จ DB์— ์ €์žฅ์„ ๋”ฐ๋กœ ํ•˜์ง€ ์•Š๊ณ  ์ฟ ํ‚ค๋กœ ๊ตฌํ˜„์„ ํ•˜๊ธฐ๋กœ ๊ฒฐ์‹ฌํ–ˆ๋‹ค. ์ฃผ์š” ๊ธฐ๋Šฅ์„ ์ƒ๊ฐํ•ด๋ณด์•˜๋‹ค. ๊ธฐ๋Šฅ 1. ์ƒํ’ˆ์„ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ์ถ”๊ฐ€ 2. ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด๊ธด ์ƒํ’ˆ ๋ชฉ๋ก ์กฐํšŒ => ์ˆ˜์ •๊ณผ ์‚ญ์ œ๊ฐ€ ์—†๋Š” ์ด์œ ๋Š” ํ”„๋ŸฐํŠธ๋‹จ์—์„œ ํ•  ์ˆ˜ ์žˆ์ง€ ์•Š.. 2022. 5. 21.
๋ฐ˜์‘ํ˜•