๐Ÿ”ฅ TIL - Day 52

Kim Dae Hyunยท2021๋…„ 11์›” 11์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
62/93

๐Ÿ“Œ Springboot ํ† ์ด ํ”„๋กœ์ ํŠธ ์‹œ์ž‘

๊ฐ„๋‹จ? ํ•œ Springboot ๊ธฐ๋ฐ˜ ํ† ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค.
์ด๋ฒˆ์ฃผ ์•ˆ์— ๋๋‚ด๋Š” ๊ฑธ ๋ชฉํ‘œ๋กœ ๋‹ฌ๋ ค๋ณด์ž..!

์ผ๋‹จ ๊ตฌ์ƒํ•œ ์š”๊ตฌ์‚ฌํ•ญ์€ ์ด๋ ‡๋‹ค.

์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ์š”๊ตฌ์‚ฌํ•ญ

  • ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ
  • ๋ฆฌ๋ทฐ์–ด๋ฅผ ์ง€์ •ํ•˜์—ฌ ์ฝ”๋“œ๋ฆฌ๋ทฐ๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋“ฑ๋กํ•œ ์ฝ”๋“œ๋ฆฌ๋ทฐ ์š”์ฒญ์„ ์‚ญ์ œ, ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋“ฑ๋ก๋œ ์ฝ”๋“œ๋ฆฌ๋ทฐ ๋ชฉ๋ก์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • ๋“ฑ๋ก๋œ ์ฝ”๋“œ๋ฆฌ๋ทฐ์˜ ์ƒ์„ธ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฆฌ๋ทฐ์–ด์— ์˜ํ•ด ๋ฆฌ๋ทฐ๊ฐ€ ์™„๋ฃŒ๋์„ ๋•Œ ์•Œ๋ฆผ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

๋ฆฌ๋ทฐ์–ด ์š”๊ตฌ์‚ฌํ•ญ

  • ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ
  • ๋ฆฌ๋ทฐ๊ฐ€๋Šฅํ•œ ์–ธ์–ด๋ฅผ ์ง€์ •ํ•˜๊ณ  ์ง€์ •๋œ ์–ธ์–ด์˜ ๋ฆฌ๋ทฐ์š”์ฒญ๋งŒ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์ž์‹ ์—๊ฒŒ ์š”์ฒญ๋œ ๋ฆฌ๋ทฐ๋ชฉ๋ก์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • ์ž์‹ ์—๊ฒŒ ์š”์ฒญ๋œ ๋ฆฌ๋ทฐ๋ฅผ ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์š”์ฒญ๋œ ๋ฆฌ๋ทฐ์— ๋Œ€ํ•ด ๋ฆฌ๋ทฐ์ฝ”๋“œ์™€ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
  • ์ž์‹ ์ด ์ฒ˜๋ฆฌํ•œ ๋ฆฌ๋ทฐ ๋ชฉ๋ก์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

CRUD์˜ ํ๋ฆ„์— ๋” ์ต์ˆ™ํ•ด์ง€๊ณ ์ž ๋น„์Šทํ•œ ํ๋ฆ„์„ ๊ฐ€์ง„ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์ƒํ•ด๋ดค๋‹ค.
๊ทธ๋ƒฅ CRUD๋งŒ ์žˆ์œผ๋ฉด ์กฐ๊ธˆ ์‹ฌ์‹ฌํ•˜๋‹ˆ ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ์ด๋‚˜ ์ง€์ •๋œ ์–ธ์–ด์˜ ์š”์ฒญ๋งŒ ๋ฐ›๋Š” ๋“ฑ ์ œํ•œ์‚ฌํ•ญ์„ ์ถ”๊ฐ€ํ•ด๋ดค๋‹ค.


๐Ÿ“Œ 1์ผ์ฐจ

๋„๋ฉ”์ธ ์„ค๊ณ„

๋„๋ฉ”์ธ ์„ค๊ณ„ ๋„ˆ๋ฌด ์–ด๋ ต๋‹ค.. ์•„์ง ์™„์ „ ์ž„์‹œ๋กœ ๊ตฌ์„ฑํ•œ ERD์ด๋‹ค.


ํšŒ์›๊ฐ€์ž… / ๋กœ๊ทธ์ธ

์ „๋ถ€ ajax ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„ํ•  ์˜ˆ์ •์ด๋ผ ํšŒ์›๊ฐ€์ž…์˜ ๊ฒฝ์šฐ Json ๋ฐ์ดํ„ฐ๋กœ ๋ฐ›์•„์„œ ์ €์žฅ์‹œ์ผฐ๋‹ค.
๋กœ๊ทธ์ธ์€ JWT ํ† ํฐ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค. ํ† ํฐ๊ธฐ๋ฐ˜ ์ธ์ฆ์— ๊ฝค ์ต์ˆ™ํ•ด์ง„ ๊ฒƒ ๊ฐ™๋‹ค.
Spring security๋ฅผ ์ด์šฉํ•ด์„œ ์ผ๋‹จ ๋ชจ๋“  ๊ฒฝ๋กœ์˜ ์š”์ฒญ์€ ์—ด์–ด๋‘๊ณ  ์ธ์ฆ ๋ฐ ์ธ๊ฐ€๊ฐ€ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ @Secured๋กœ ์ œํ•œํ•˜๋Š” ๋ฐฉ์‹์„ ํƒํ–ˆ๋‹ค.


API ์„ค๊ณ„


์ฝ”๋“œ๋ฆฌ๋ทฐ ๋“ฑ๋ก, ์ˆ˜์ •, ์‚ญ์ œ, ๋ชฉ๋ก API ๊ตฌํ˜„

์‹ ๋‚˜๋Š” CRUD ๊ตฌํ˜„

Postman์„ ์ด์šฉํ•ด์„œ ํ…Œ์ŠคํŠธ ์™„๋ฃŒํ–ˆ๋‹ค.
ํšŒ์›๊ฐ€์ž…->๋กœ๊ทธ์ธ->๋ฆฌ๋ทฐ์š”์ฒญ๋“ฑ๋ก->๋ฆฌ๋ทฐ์š”์ฒญ๋ชฉ๋กํ™•์ธ->๋ฆฌ๋ทฐ์š”์ฒญ๋‹จ๊ฑด์กฐํšŒ->๋ฆฌ๋ทฐ์š”์ฒญ๋‹จ๊ฑด์‚ญ์ œ



์˜ค๋Š˜์˜ ํŠธ๋Ÿฌ๋ธ”..
๋‹ค๋Œ€์ผ ๊ด€๊ณ„์— ์žˆ๋Š” ๋‘ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ save ์‹œํ‚ค๋Š” ๋ถ€๋ถ„์—์„œ ๋ฐœ์ƒํ•œ ์ด์Šˆ์ด๋‹ค.
์ผ ์ชฝ์˜ ์—”ํ‹ฐํ‹ฐ๋ฅผ ๋จผ์ € persistํ•˜๊ณ  ์ดํ›„ ๋‹ค ์ชฝ์˜ ์—”ํ‹ฐํ‹ฐ๋ฅผ ๊ตฌ์„ฑํ•ด์„œ ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  persistํ•˜๋Š” ๋ฐฉ์‹์ด์˜€๋Š”๋ฐ ์ผ ์ชฝ์˜ ์—”ํ‹ฐํ‹ฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ชฝ์—์„œ ๊ณ„์† NullPointException (NPE) ์ด ๋ฐœ์ƒํ–ˆ๋‹ค..

์ผ๋‹จ ์ด์œ ๋Š” ๋นŒ๋”ํŒจํ„ด์„ ์‚ฌ์šฉํ•  ๋•Œ ์ปฌ๋ ‰์…˜์ด ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ๋•Œ๋ฌธ์ด์˜€๋‹ค.
๋ณดํ†ต ์ปฌ๋ ‰์…˜ ํ•„๋“œ๋ฅผ ์ดˆ๊ธฐํ™” ํ•  ๋•Œ NPE๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด์„œ List<String> list = new ArrayList<>(); ์ฒ˜๋Ÿผ ์ดˆ๊ธฐํ™”๋ฅผ ํ•ด์ค€๋‹ค. ๊ทผ๋ฐ ์ด ๋ถ€๋ถ„์ด ๋นŒ๋”ํŒจํ„ด์—์„œ๋Š” ๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๋‚ด ์ƒ๊ฐ๋Œ€๋กœ ๋ผ๋ฉด ๋นŒ๋”ํŒจํ„ด์—์„œ list๋ฅผ ๋นผ๋จน์–ด๋„ NPE๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์•ˆ ๋˜๋Š”๋ฐ ๋ฐœ์ƒํ•œ ๊ฒƒ์ด๋‹ค..

ํ˜น์‹œ๋‚˜ ์‹ถ์–ด์„œ ๊ทธ๋ƒฅ ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ๊ฐ™์€ ์ดˆ๊ธฐํ™” ์ž‘์—…์„ ํ•˜๋‹ˆ ๋ฌธ์ œ์—†์ด ์‹คํ–‰๋๋‹ค. ์ด ๋ถ€๋ถ„ ์‹ ๊ฒฝ์จ์•ผ์ง€ ๋‚˜์ค‘์— ์‹œ๊ฐ„์„ ํ—ˆ๋น„ํ•˜์ง€ ์•Š๊ฒ ๋‹ค..
๋งŒ์•ฝ ๋นŒ๋”ํŒจํ„ด์„ ๊ณ ์ง‘ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ž„์˜๋กœ ์ปฌ๋ ‰์…˜ ํ•„๋“œ๋ถ€๋ถ„์— new ArrayList<>()๋ฅผ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

๋นŒ๋”ํŒจํ„ด ์‚ฌ์šฉ์‹œ ์ปฌ๋ ‰์…˜์— ์ฃผ์˜ํ•˜์ž!

profile
์ข€ ๋” ์ฒœ์ฒœํžˆ ๊นŒ๋จน๊ธฐ ์œ„ํ•ด ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ๐Ÿง

0๊ฐœ์˜ ๋Œ“๊ธ€