GIT ๊ป์ด๋ค ์ด์ ๋ถํฐ ๋๋ฅผ ๋์ง๊ธฐ๊ฒ ๊ดด๋กญํ๋ git ํนํ ์์ ์ค ๋ค๋ฅธ ๋ถ๋ค์ ์ฝ๋๋ฅผ pull ํ๋ฉด ์๊ธฐ๋ ์ด ๊ธ... ์ด๋ฒ์๋ ์ญ์๋,,,, ๊ฐ๋ฐ ์์ด ๋ง๋ค๋ณด๋ ๋์ฑ ๋ง์ด ๋น ๋ฅด๊ฒ ๋ฐ์ํ๋ค.. ์ฒ์์๋ ๊ทธ๋ฅ ์์ ํฌ๊ธฐํ๊ณ ์๋ก clone ํ๋ค. ์ดํ์ ๋ ๋ฐ์ํด์ ํ ๋ฒ ์๋ก์ด ๊ฒ์ ์๋ ๋ก์ปฌ develop ๋ธ๋์น์์ ๋จธ์ง๋ ์ฝ๋๋ฅผ pull ์์
์ค์ด ๋ธ๋์น์์ stash ํ์ฌ ์์
ํ๋ ๋ด์ฉ ์ ์ฅ git merge develop์ผ๋ก merge! git stash apply ๋ก ์ ์ฅํด๋์ ์ฝ๋ ๊ฐ์ ธ์ค๊ธฐ ์๋ฃ ์ฌ์ค ์ด๊ฒ ์ ๋๋์ง๋ ์๋ชจ๋ฅด๊ฒ ๋ค. ํ์ง๋ง ๋๋ ๊ฒ์ ์๋ฏธ๋ฅผ ๋ถ์ฌํด๋ณด์!ใ
์๋ฆฌ๋ ์ถํ ์๊ฒ์ด๋ค......ใ
TIL๐ฅ
์ค๋ 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..