๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Today I Learned(TIL)/์ŠคํŒŒ๋ฅดํƒ€ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„

๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ_Day 4

by carrot0911 2024. 12. 23.

์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง 

  • ๊ธฐ์ดˆํ”„๋กœ์ ํŠธ ํŒ”๋กœ์šฐ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ ํŒ”๋กœ์šฐ ์‚ญ์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ ํŠน์ • ๋ฉค๋ฒ„์˜ ํŒ”๋กœ์šฐ ์ „์ฒด ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • TIL ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ

 

์˜ค๋Š˜ ์–ป์€ ๋‚ด์šฉ ์ •๋ฆฌ โœ๏ธ 

๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ (๋‰ด์Šคํ”ผ๋“œ ๋งŒ๋“ค๊ธฐ ํ”„๋กœ์ ํŠธ)

  • ํŒ”๋กœ์šฐ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • Follow Entity ์ƒ์„ฑ ํ›„ ํŒ”๋กœ์šฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค.
    • member_id(PathVariable)์™€ following_id)๋ฅผ ๋ฐ›์•„ ํŒ”๋กœ์šฐ ๊ด€๊ณ„๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ ์„ฑ๊ณตํ–ˆ๋‹ค.
  • ํŒ”๋กœ์šฐ ์‚ญ์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • member_id(PathVariable)์™€ follow_id(Pathvariable)๋ฅผ ๋ฐ›์•„ ํŒ”๋กœ์šฐ ๊ด€๊ณ„๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ ์„ฑ๊ณตํ–ˆ๋‹ค.
  • ํŠน์ • ๋ฉค๋ฒ„์˜ ํŒ”๋กœ์šฐ ์ „์ฒด ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • member_id(PathVariable)๋ฅผ ๋ฐ›์•„ ํŒ”๋กœ์ž‰ ๋ฉค๋ฒ„๋ฅผ ์ „์ฒด ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ ์„ฑ๊ณตํ–ˆ๋‹ค.
  • ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
    • ์ƒ์„ฑ ๊ธฐ๋Šฅ: RequestBody๋ฅผ ํ™œ์šฉํ•ด following_id๋ฅผ ์ž…๋ ฅ๋ฐ›๋„๋ก ์ˆ˜์ •ํ–ˆ๋‹ค.
    • ์กฐํšŒ ๊ธฐ๋Šฅ: ํŠน์ • ๋ฉค๋ฒ„์˜ ํŒ”๋กœ์šฐ ์ „์ฒด ์กฐํšŒ ์‹œ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋น„์–ด์žˆ๋‹ค๋ฉด ๋นˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์ˆ˜์ •ํ–ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๊ณ ๋ฏผํ–ˆ๋˜ ๋ถ€๋ถ„

  • PathVariable๋กœ member_id๋ฅผ ๋ฐ›๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋กœ๊ทธ์ธ์„ ํ•œ ์ƒํƒœ์ด๋‹ˆ๊นŒ Session_id๋ฅผ ํ™œ์šฉํ•œ๋‹ค๋ฉด ์–ด๋–จ๊นŒ??
  • ํŠน์ • ๋ฉค๋ฒ„์˜ ํŒ”๋กœ์šฐ ์ „์ฒด ์กฐํšŒ ์‹œ ๋ฐ˜ํ™˜๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๋ฉด ๋นˆ ๋ฆฌ์ŠคํŠธ๋กœ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ• ๊นŒ? ์•„๋‹ˆ๋ฉด ๋ฐ˜ํ™˜๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋‹ˆ๊นŒ Not Found๋กœ ๋ฐ˜ํ™˜๋˜๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?
  • ํŒ”๋กœ์›Œ ์ˆ˜๋„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ??

ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

  • ๋ฌธ์ œ ์ƒํ™ฉ
    • ํŒ€์›์ด Pull Request๋ฅผ ์š”์ฒญํ•˜๊ณ , ์ด๋ฅผ ์ˆ˜๋ฝํ•˜์—ฌ Repository์— ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์ƒ๊ฒผ๋‹ค.
      ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•ด git pull origin dev ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ ํ›„, ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜ java.lang.NullPointerException์ด ๋ฐœ์ƒํ–ˆ๋‹ค.
  • ๋ฌธ์ œ ์›์ธ
    • Gradle ์„ค์ • ๋ฌธ์ œ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.
    • Gradle ํŒŒ์ผ์˜ ์˜์กด์„ฑ ์„ค์ •์ด๋‚˜ ํŒŒ์ผ ๊ตฌ์กฐ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ, ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•˜๋ฉฐ NullPointerException์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋ฐ˜์˜ ์‹œ ์บ์‹œ ๋ฌธ์ œ๋กœ ์ธํ•ด ๋นŒ๋“œ ํ™˜๊ฒฝ์ด ์ œ๋Œ€๋กœ ๋™๊ธฐํ™”๋˜์ง€ ์•Š์•˜์„ ๊ฐ€๋Šฅ์„ฑ๋„ ์žˆ๋‹ค.
  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
    • ์บ์‹œ ์ •๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค.
      • IntelliJ์—์„œ File > Invalidate Caches > Restart๋ฅผ ์„ ํƒํ•˜์—ฌ ์บ์‹œ๋ฅผ ์ดˆ๊ธฐํ™”ํ–ˆ๋‹ค.
    • ์บ์‹œ ์ •๋ฆฌ ํ›„, ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•˜์—ฌ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•จ์„ ํ™•์ธํ–ˆ๋‹ค.
  • ๊ฒฐ๋ก 
    • ํŒ€ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•œ ํ›„, ๋นŒ๋“œ ํ™˜๊ฒฝ๊ณผ ์˜์กด์„ฑ ์„ค์ •์„ ํ•ญ์ƒ ์ ๊ฒ€ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ๋ฐฐ์› ๋‹ค.
    • Gradle๊ณผ ๊ฐ™์€ ๋นŒ๋“œ ๋„๊ตฌ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋Š” ์บ์‹œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ฑฐ๋‚˜ ์„ค์ • ํŒŒ์ผ์„ ๊ฒ€ํ† ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.
    • ํ˜‘์—… ์ค‘ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ ์„ค์ • ๋ฌธ์ œ์— ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์ฒ˜ํ•˜๋Š” ๋Šฅ๋ ฅ์ด ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค.

๋‚˜์ค‘์— ์ถ”๊ฐ€์ ์œผ๋กœ ์ˆ˜์ •ํ•ด์•ผ ํ•  ๋ถ€๋ถ„

  • ํ•œ ์‚ฌ๋žŒ์ด ํŒ”๋กœ์šฐ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ํ•  ์ˆ˜ ์žˆ๋Š” ์—๋Ÿฌ์‚ฌํ•ญ์„ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค.

 

MacBook์˜ ํ„ฐ๋ฏธ๋„์— oh-my-zsh ์„ค์น˜ ๋ฐ ์ ์šฉ ์™„๋ฃŒ

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํ„ฐ๋ฏธ๋„์€ ๋ธŒ๋žœ์น˜์™€ ๋‹ค๋ฅธ ์ •๋ณด๋“ค์„ ์•Œ์•„๋ณด๊ธฐ ์–ด๋ ค์›Œ์„œ ํ…Œ๋งˆ๋ฅผ ์„ค์ •ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.
  • ๊ตฌ๊ธ€๋ง๊ณผ ChatGPT์˜ ๋„์›€์„ ์–ป์–ด์„œ ์„ฑ๊ณต์ ์œผ๋กœ ํ…Œ๋งˆ๋ฅผ ์ ์šฉ์‹œ์ผฐ๋‹ค.

 

์˜ค๋Š˜ ํ•˜๋ฃจ ์ •๋ฆฌ โœ๏ธ

๋“œ๋””์–ด ๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ œ๋Œ€๋กœ ์‹œ์ž‘ํ–ˆ๋‹ค!

์ฃผ๋ง ๋™์•ˆ ํŒ€์›๋ถ„์ด ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ์— ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ๋“ค์„ ์™„์„ฑ์‹œ์ผœ ์ฃผ์…”์„œ git pull origin dev๋ฅผ ํ†ตํ•ด Pull Request ํ•œ ์ˆ˜์ •์‚ฌํ•ญ์„ ๋ฐ›์•„์™”๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ java.lang.NullPointerException์ด ๋ฐœ์ƒํ–ˆ๋‹ค. ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ Gradle ์ ์šฉํ•˜๋Š”๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ด์„œ ์•Œ๋ ค์ฃผ๋Š” ํ•ด๊ฒฐ๋ฐฉ๋ฒ•๋Œ€๋กœ ์บ์‹œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ๋‹ค์‹œ ์‹คํ–‰ํ–ˆ๋”๋‹ˆ ์—๋Ÿฌ๊ฐ€ ์‚ฌ๋ผ์ง„ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๊ทธ ํ›„ ์˜ค์ „๋™์•ˆ ๋‚ด๊ฐ€ ๋‹ด๋‹นํ•˜๊ธฐ๋กœ ํ–ˆ๋˜ ํŒ”๋กœ์šฐ ์ถ”๊ฐ€, ์‚ญ์ œ, ์กฐํšŒ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค.
ํŒ”๋กœ์šฐ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ๋จผ์ € ๊ตฌํ˜„ํ•˜๊ณ , ์‚ญ์ œ ๊ธฐ๋Šฅ๊นŒ์ง€ ๊ตฌํ˜„์„ ์™„๋ฃŒํ–ˆ๋‹ค. Postman์œผ๋กœ ํ™•์ธํ–ˆ์„ ๋•Œ ๋ฌธ์ œ๊ฐ€ ์—†์Œ์„ ํ™•์ธํ•˜๊ณ  ํŠน์ • ๋ฉค๋ฒ„์˜ ์ „์ฒด ํŒ”๋กœ์šฐ ์กฐํšŒ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค. Postman์„ ํ†ตํ•ด ํŠน์ • ๋ฉค๋ฒ„์˜ ๋ชจ๋“  ํŒ”๋กœ์šฐ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ํ™•์ธ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค!

์ ์‹ฌ์‹œ๊ฐ„ ์ดํ›„์—๋Š” ์„œ๋กœ ์ง„ํ–‰ํ•œ ์ƒํ™ฉ์„ ๊ณต์œ ํ–ˆ๋‹ค. 
๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ํ•จ๊ป˜ ๋ณด๋ฉด์„œ ์ˆ˜์ •ํ•˜๋ฉด ์ข‹์„ ๋ถ€๋ถ„๋“ค์„ ๋ฐœ๊ฒฌํ•ด์„œ ์ถ”๊ฐ€์ ์œผ๋กœ ์ˆ˜์ •ํ–ˆ๋‹ค! ์›๋ž˜ ํŒ”๋กœ์šฐ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ @ReqeustParam์„ ์‚ฌ์šฉํ•ด์„œ following_id๋ฅผ ๋ฐ›์•„์™”๋Š”๋ฐ, @ReqeustBody๋ฅผ ์‚ฌ์šฉํ•ด์„œ following_id๋ฅผ ๋ฐ›์•„์˜ค๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ˆ˜์ •ํ–ˆ๋‹ค! ๊ทธ ๋’ค์— ํŠน์ • ๋ฉค๋ฒ„์˜ ์ „์ฒด ํŒ”๋กœ์šฐ ์กฐํšŒ ๊ธฐ๋Šฅ์—์„œ ๋นˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•  ๋•Œ 404 Not Found๊ฐ€ ๋ฐ˜ํ™˜๋˜๋„๋ก ํ–ˆ๋Š”๋ฐ, ๋นˆ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋ฐ˜ํ™˜๋˜๋„๋ก ์ˆ˜์ •์„ ์™„๋ฃŒํ–ˆ๋‹ค!

๊ทธ๋ฆฌ๊ณ  ์ฒ˜์Œ์œผ๋กœ Pull Request๋ฅผ ํ–ˆ๋‹ค!!! ๐Ÿ˜Ž๐Ÿ˜Ž๐Ÿ˜Ž๐Ÿ˜Ž๐Ÿ˜Ž๐Ÿ˜Ž
์ค‘๊ฐ„์— ํŒ€์›์˜ ์ˆ˜์ • ์‚ฌํ•ญ์„ ๋ฐ›์•„๋ณด๋Š” ๊ฒƒ์„ ์—ฐ์Šตํ•˜๊ธฐ ์œ„ํ•ด์„œ Push ํ•˜๊ธฐ ์ „์— fetch์™€ rebase๋ฅผ ํ†ตํ•ด์„œ ์ˆ˜์ • ์‚ฌํ•ญ์„ ๋ฐ›์•„์™”๋Š”๋ฐ.... Push ํ•  ๋•Œ ๋ณด๋‹ˆ๊นŒ ์ˆ˜์ • ์‚ฌํ•ญ๊นŒ์ง€ ๋ชจ๋‘ Push ๋˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ํ˜ผ๋ž€์— ๋น ์กŒ๋‹ค.. ์—ฌ๊ธฐ์„œ ๋‚ด๊ฐ€ ๋ญ˜ ์ž˜๋ชป ๊ฑด๋“œ๋ฆฌ๋ฉด ์•ˆ ๋  ๊ฒƒ ๊ฐ™์•„์„œ ํŒ€์žฅ๋‹˜์˜ ๋„์›€์„ ๋ฐ›์•„์„œ git push origin feature/follow-crud --force๋ฅผ ํ†ตํ•ด ๋ฌด์‚ฌํžˆ push ๋ฐ Pull Request๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ๋‹ค! --force ๋ถ€๋ถ„์€ ๋‚˜์ค‘์— ์„ค๋ช…์„ ๋“ค์–ด๋ณด๋‹ˆ ๊ฐ•์ œ๋กœ ํ‘ธ์‰ฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ช…๋ น์–ด๋ผ๋Š” ๊ฒƒ์„ ๋“ค์—ˆ๋‹ค. ์•„์ง Git์— ๊ด€๋ จํ•ด์„œ ๋ชจ๋ฅด๋Š” ๊ฒƒ์ด ๋„ˆ๋ฌด ๋งŽ์•„์„œ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ณ„์† ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋ฐฐ์›Œ์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค!

๋‚ด์ผ์€ ๋„์ „ ๊ธฐ๋Šฅ๋“ค์„ ๊ตฌํ˜„ ์™„๋ฃŒํ•˜๊ณ  ์ค‘๊ฐ„ ์ ๊ฒ€์„ ํ•˜๋Š” ๋‚ ์ด๋‹ˆ๊นŒ ๋‚ด์ผ ์—ญํ•  ๋ถ„๋‹ด์ด ์™„๋ฃŒ๋˜๋ฉด ๋‚ด๊ฐ€ ๋งก์€ ๋ถ€๋ถ„์„ ์ž˜ ๋งˆ๋ฌด๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณต๋ถ€๋ฅผ ๊ณ„์† ํ•ด์•ผ๊ฒ ๋‹ค!!

ํ”„๋กœ์ ํŠธ๊ฐ€ ์ž˜ ๋งˆ๋ฌด๋ฆฌ๋  ์ˆ˜ ์žˆ๋„๋ก ๋งˆ์ง€๋ง‰ ๋‚ ๊นŒ์ง€ ๊ธด์žฅ์„ ๋†“์ง€ ๋ง๊ณ  ์—ด์‹ฌํžˆ ํ•˜์ž!! ํŒŒ์ดํŒ…!!!!!

 

๋‚ด์ผ ๊ณ„ํš โฐ

  • ๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ ๋„์ „ ๊ธฐ๋Šฅ ์—ญํ•  ๋ถ„๋‹ด ํ›„ ๋งก์€ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ์ˆ˜์ค€๋ณ„ ํ•™์Šต๋ฐ˜ ๋ฒ ์ด์ง๋ฐ˜ ์„ธ์…˜ ๋“ฃ๊ธฐ
  • TIL ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ

+ ์ถ”๊ฐ€๋กœ ๊ณ„ํš์ด ๋” ์ƒ๊ธธ ์ˆ˜๋„ ์žˆ์Šด๋‹ค~_~