TIL๐Ÿ”ฅ

GIT ๊ปŒ์ด๋„ค ์ด์ „ ๋ถ€ํ„ฐ ๋‚˜๋ฅผ ๋ˆ์งˆ๊ธฐ๊ฒŒ ๊ดด๋กญํžˆ๋˜ git ํŠนํžˆ ์ˆ˜์ • ์ค‘ ๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ์ฝ”๋“œ๋ฅผ pull ํ•˜๋ฉด ์ƒ๊ธฐ๋Š” ์ด ๊ธ€... ์ด๋ฒˆ์—๋„ ์—ญ์‹œ๋‚˜,,,, ๊ฐœ๋ฐœ ์–‘์ด ๋งŽ๋‹ค๋ณด๋‹ˆ ๋”์šฑ ๋งŽ์ด ๋น ๋ฅด๊ฒŒ ๋ฐœ์ƒํ–ˆ๋‹ค.. ์ฒ˜์Œ์—๋Š” ๊ทธ๋ƒฅ ์•„์— ํฌ๊ธฐํ•˜๊ณ  ์ƒˆ๋กœ clone ํ–ˆ๋‹ค. ์ดํ›„์— ๋˜ ๋ฐœ์ƒํ•ด์„œ ํ•œ ๋ฒˆ ์ƒˆ๋กœ์šด ๊ฒƒ์„ ์‹œ๋„ ๋กœ์ปฌ develop ๋ธŒ๋žœ์น˜์—์„œ ๋จธ์ง€๋œ ์ฝ”๋“œ๋ฅผ pull ์ž‘์—… ์ค‘์ด ๋ธŒ๋žœ์น˜์—์„œ stash ํ•˜์—ฌ ์ž‘์—…ํ•˜๋˜ ๋‚ด์šฉ ์ €์žฅ git merge develop์œผ๋กœ merge! git stash apply ๋กœ ์ €์žฅํ•ด๋†“์€ ์ฝ”๋“œ ๊ฐ€์ ธ์˜ค๊ธฐ ์™„๋ฃŒ ์‚ฌ์‹ค ์ด๊ฒŒ ์™œ ๋˜๋Š”์ง€๋Š” ์ž˜๋ชจ๋ฅด๊ฒ ๋‹ค. ํ•˜์ง€๋งŒ ๋˜๋Š” ๊ฒƒ์— ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•ด๋ณด์ž!ใ…‹ ์›๋ฆฌ๋Š” ์ถ”ํ›„ ์•Œ๊ฒƒ์ด๋‹ค......ใ…Ž
์˜ค๋Š˜ JPA ์‹ฌํ™” : Spring Data ๊ตฌ์กฐ ๋ฐ JpaRepository ์›๋ฆฌ Spring Data ๊ตฌ์กฐ ๊ธฐ๋Šฅ ๋ชฉ๋ก ๊ฐ•๋ ฅํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฐ ์‚ฌ์šฉ์ž ์ง€์ • ๊ฐ์ฒด ๋งคํ•‘ ์ถ”์ƒํ™” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ์ด๋ฆ„์—์„œ ๋™์  ์ฟผ๋ฆฌ ํŒŒ์ƒ ๊ธฐ๋ณธ ์†์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ๊ตฌํ˜„ ๋„๋ฉ”์ธ ๊ธฐ๋ณธ ํด๋ž˜์Šค ๋ช…๋ฃŒํ•œ ์ถ”์  ๊ธฐ๋Šฅ ์ง€ hyeyun.tistory.com ๊ฐ•์˜๋ฅผ ๋“ค์—ˆ๋‹ค. ๋‚ด์ผ์€ ๊ผญ ํŽ˜์ด์ง€๋„ค์ด์…˜๊นŒ์ง€ ๊ณต๋ถ€ํ•˜์ž ์•„์ง ์œ ์ € ๋ฐ ์ด์ „ ๋‹จ๊ณ„๊ฐ€ ๋œ ๊ตฌํ˜„๋˜์–ด์„œ ํ”Œ์ ์„ ์ง„ํ–‰ํ•˜๊ธฐ์— ์–ด๋ ค์›€์ด ์žˆ์–ด ์•„์ง ์•ˆํ•˜๋Š”์ค‘ ใ…Ž ์ฃผ๋ง ๋ฐ˜๋‚ฉํ•˜๊ณ  ๋นก์„ธ๊ฒŒํ•ด์•ผ๊ฒ ๋‹ค ๐Ÿ™
์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ ์ตœ์ข… ์ „ ๋งˆ์ง€๋ง‰ ํŒ€ํ”Œ ํ˜ธใ…์ดํŒ…! ํŒ€์›๋“ค๊ณผ ๊ต‰์žฅํžˆ ์†๋ฐœ์ด ์ž˜๋งž๋Š”๋“ฏ ๋‹ค๋“ค ๋š๋”ฑ๋š๋”ฑ ์™„์„ฑ! Trello ๊ฐ™์€ ํ˜‘์—… ํˆด์„ ๊ตฌํ˜„ํ•˜๋Š” ํ”Œ์  ๊ต‰์žฅํžˆ ์ƒ์„ธํžˆ ๊ตฌ์ฒด์ ์œผ๋กœ ์ž˜ ๋‚˜๋ˆด๋‹ค API ๋ช…์„ธ์„œ ERD ์ด์ œ๋ถ€ํ„ฐ ๋š๋”ฑ ๋š๋”ฑ ๋งŒ๋“ค์–ด๋ณด์ž
https://github.com/kimhyeyun/spring-master-personal-assignment ์™„๋ฃŒ...?๐Ÿค”? ใ…Ž ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ์ƒ๋žต... ๋‚ด๋ง˜๋Œ€๋กœ... ์•„๋‹ˆ๋‹ค ๋‚ด์ผ๋งˆ์ €ํ•ด์„œ ์‹œ๊ฐ„์•ˆ์— ์™„์„ฑํ•˜์ž ใ… ใ…  JQuery์— ์‹œ๊ฐ„์„ ๋งŽ์ด์”€ ํ•˜์ง€๋งŒ ํ•ด๋ƒˆ๋‹ค ๋‚˜๋Š” ํ•ด๋ƒˆ๋‹ค. ์“ธ๊ฒŒ์—†๋‹ค... ๋‚ด์ผ์€ ์—ด์‹ฌํžˆ ํ•ด์•ผ๊ฒ ๋‹ค.
JWT ํ† ํฐ ๊ฒ€์ฆ ์‹œ ๊ณ„์†๋œ ์—๋Ÿฌ ์™œ์ง€์™œ์ง€... ์™œ ์ž๊พธ ๋ชจ๋“  ๊ฒ€์ฆ์—์„œ Unsupported JWT token ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ• ๊นŒ......... ์ด์ „ ํ”Œ์ ์—์„œ๋Š” ์ž˜ ๋Œ์•„๊ฐ€๋Š”๋ฐ...... ํ˜น์‹œ๋‚˜ ๋‹จ์–ด๊ฐ€ ์•„๋‹ˆ๋ผ ์•ŒํŒŒ๋ฒณ ํ•˜๋‚˜ํ•˜๋‚˜ ๋‹ค ์ชผ๊ฐœ์„œ ํ™•์ธํ•ด๋ณธ ๊ฒฐ๊ณผ parseClaimsJws() ์ด parseClaimsJwt()๋กœ ์ž˜๋ชป๋˜์–ด์žˆ์—ˆ๋‹ค. ์ž๋™ ์™„์„ฑ๊ธฐ๋Šฅ์˜ ํํ•ด... ์ฒ˜์Œ์— ํ† ํฐ์„ ์ƒ์„ฑํ•  ๋•Œ, parseClaimsJws() parseClaimsJws()๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๊ฑฐ ๋Œ€์‹ ์— parseClaimsJwt()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.์ด๋Š”, ์šฐ๋ฆฌ๊ฐ€ ์ฒ˜์Œ์— ํ† ํฐ์„ ์ƒ์„ฑํ•  ๋•Œ signWith์„ ํ†ตํ•ด์„œ ์„œ๋ช…์„ ์ง„ํ–‰ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณตํ˜ธํ™” ์‹œ์—๋„ ์„œ๋ช…์— ๋Œ€ํ•œ ๊ฒ€์ฆ์„ ์ง„ํ–‰ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. (Jw..
๋ณต์Šต๊ณผ์ œ ์™„? https://github.com/kimhyeyun/spring-challenge-assignment ์ฃผ์–ด์ง„ ์š”๊ตฌ์‚ฌํ•ญ๋“ค์„ ๋Œ€๋ถ€๋ถ„ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ, ๋ชปํ•œ ๋ถ€๋ถ„์€ ๋”ฑํ•˜๋‚˜ (์ฑŒ๋ฆฐ์ง€ ๊ณผ์ œ) ๊ฒŒ์‹œ๊ธ€์ด ์‚ญ์ œ๋  ๋•Œ ์—ฐ๊ด€๋œ ๋Œ“๊ธ€๋„ ๊ฐ™์ด ์ง€์šฐ๋„๋ก ์Šค์ผ€์ค„๋Ÿฌ ์ฝ”๋“œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ์ด ๋ถ€๋ถ„์ธ๋ฐ, ์ดํ•ด๊ฐ€ ์ž˜๊ฐ€์ง€์•Š์•˜๋‹ค... ์Šค์ผ€์ค„๋Ÿฌ๋กœ ์—ฐ๊ด€๋œ ๋Œ“๊ธ€ ์‚ญ์ œ....? ํ—ค?? ๊ทธ๋ž˜๋„ ๋‹ค๋ฅธ ๊ฒƒ๋“ค์€ ์ž˜ํ–ˆ๋‹ค,.. s3 ์—ฐ๊ฒฐ๋„ ํ–ˆ๊ณ , ์ˆ˜์ •๋œ์ง€ 90์ผ์ด ์ง€๋‚œ ๋ฐ์ดํ„ฐ๋Š” ์ž๋™์œผ๋กœ ์ง€์šฐ๋Š” ์Šค์ผ€์ค„๋Ÿฌ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœ ๋ถ€๋ถ„๋„ ํ–ˆ๋‹ค. ๋‚˜๋Š” ๋งค์ผ ์ž์ •์— ๋งˆ์ง€๋ง‰ ์ˆ˜์ •์ผ๋กœ๋ถ€ํ„ฐ 60์ผ์ด ๋„˜์€ ๊ฒŒ์‹œ๊ธ€์„ ์‚ญ์ œํ–ˆ๋‹ค. ๋ณดํ†ต 2๋‹ฌ ๋‹จ์œ„๋กœ ํœด๋จผ์ฒ˜๋ฆฌ๊ฐ€ ๋˜๋Š” ๊ฒƒ์„ ๋งŽ์ด ๋ดค์–ด์„œ ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰ ์ˆ˜์ •์ผ๋กœ 2๋‹ฌ์ด๋ฉด ์ด๋ฏธ ์žŠํ˜€์กŒ๋‹ค๊ณ  ๋Š๊ปด์ ธ์„œ ใ…Žใ…Ž ๋‚ด์ผ๋ถ€ํ„ฐ๋Š” ์‹ฌํ™”๋ณต์Šต๊ณผ์ œ ใ„ฑใ„ฑ
๋ณต์Šต ๊ณผ์ œ ์ค‘ ๐Ÿ˜ญ (์ฑŒ๋ฆฐ์ง€ ๊ณผ์ œ) ํšŒ์› ๊ฐ€์ž… ์‹œ, ์ด๋ฉ”์ผ ํ˜น์€ SNS๋กœ ์ธ์ฆ ๋ฒˆํ˜ธ๋ฅผ ์ „๋‹ฌ ๋ฐ›๊ณ  5๋ถ„ ์ด๋‚ด์— ํ•ด๋‹น ์ธ์ฆ ๋ฒˆํ˜ธ๋ฅผ ๊ฒ€์ฆํ•ด์•ผ ํšŒ์› ๊ฐ€์ž…์— ์„ฑ๊ณตํ•˜๋„๋ก ํ•ด๋ณด๊ธฐ (redis TTL ํŠน์ง•์„ ์ข€ ๋” ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•จ.)์ด ๋ถ€๋ถ„์—์„œ ๋ง‰ํ˜”๋‹ค. ๋งŽ์€ ๊ณ ๋ฏผ์„ ํ•˜๋‹ค๊ฐ€ ๊ฒฐ๊ตญ ๋‚ด์ผ๋กœ ๋ฏธ๋ค˜๋‹ค. ๊ณ ๋ฏผ๋˜๋Š” ๋ถ€๋ถ„์ด view ๋‹จ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ํšŒ์›๊ฐ€์ž… ์ด ์ฒ˜๋ฆฌ ์„œ๋น„์Šค ์ฝ”๋“œ ์ „์— ์ฒ˜๋ฆฌ๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค. ์ด๋ฉ”์ผ ์ธ์ฆ์ด ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ํšŒ์›๊ฐ€์ž…์ด ๋˜๋ฉด ์•ˆ๋œ๋‹ค. ์ด ๋ถ€๋ถ„์ด ๋ทฐ ๋‹จ์ด ์—†์œผ๋‹ˆ๊น, ์–ด๋–ป๊ฒŒ ๋กœ์ง์„ ์งœ์•ผํ•˜๋Š”์ง€ ๊ณ ๋ฏผ๊ณ ๋ฏผ ๐Ÿค” ํšŒ์› ๊ฐ€์ž… ์ค‘์— ๋ฉ”์ผ ์ธ์ฆ ๋กœ์ง์„ ๋„ฃ๋Š” ๊ฒƒ์ด ๋งž๋Š”๊ฐ€? ์•„๋‹ˆ๋ฉด, ๋”ฐ๋กœ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์งœ๊ณ , ์ด ๊ณณ์— ๋„˜์–ด์˜ฌ ๋•Œ๋Š” ์ด๋ฏธ ๋ฉ”์ผ์ธ์ฆ์ด ์™„๋ฃŒ๋˜์–ด์žˆ์Œ์„ ํ™•์‹ ํ•˜๊ณ  ๊ฐ€์ž…ํ•ด์•ผํ•˜๋‚˜? ์•„๋‹ˆ๋ฉด request ๋‚˜ entity์— ๋ถˆ๋ฆฐ๊ฐ’์„ ๋„ฃ..
Spring Event ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์™€ ์žฅ์  ๊ฐ€์žฅ ์ฃผ๋œ ์ด์œ ๋Š” ์„œ๋น„์Šค ๊ฐ„์˜ ๊ฐ•ํ•œ ์˜์กด์„ฑ์„ ์ค„์ด๊ธฐ ์œ„ํ•จ ์˜ˆ๋ฅผ ๋“ค์–ด, ์–ด๋–ค ์ƒํ’ˆ์„ ์ฃผ๋ฌธํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๊ณ , ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์ฃผ๋ฌธ์„ ์ฒ˜๋ฆฌํ•œ ๋’ค ํ‘ธ์‰ฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐœ์†กํ•˜๊ณ , ๋ฉ”์ผ์„ ์ „์†กํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค๊ณ  ๊ฐ€์ • ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ์™€, ํ‘ธ์‰ฌ ๋ฉ”์„ธ์ง€ ๋ฐœ์†ก, ๋ฉ”์ผ ์ „์†ก ๊ธฐ๋Šฅ์ด ๊ฐ๊ฐ์˜ ์„œ๋น„์Šค(OrderService, PushService, MailService)์— ๊ตฌํ˜„๋˜์–ด ์žˆ์„ ๊ฒฝ์šฐ, ์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” OrderService์—์„œ ํ‘ธ์‰ฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐœ์ƒํ•˜๋Š” PushService์™€ ๋ฉ”์ผ ์ „์†ก์„ ํ•˜๋Š” MailService์— ๋Œ€ํ•œ ์˜์กด์„ฑ์„ ์ฃผ์ž…๋ฐ›์•„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. @Service public class OrderService { private final PushS..
KIMHYEYUN
'TIL๐Ÿ”ฅ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (2 Page)