๐Ÿง‘โ€๐Ÿ’ป์›น ๊ฐœ๋ฐœ์ž ์ทจ์ค€์ƒ์˜ Spring Boot ๊ณต๋ถ€๐Ÿ“–

J_m2nยท2023๋…„ 10์›” 4์ผ
0
post-custom-banner

๊ฐœ๋ฐœ์ž ์ทจ์ค€์ƒ์˜ Spring Boot ๊ณต๋ถ€



5๊ฐœ์›”๊ฐ„์˜ ๊ตญ๋น„๊ต์œก์ด ๋๋‚˜๊ณ  1์ฃผ ์ •๋„๋Š” ๋ณด์ƒ ์‹ฌ๋ฆฌ๋กœ ์•„๋ฌด๊ฒƒ๋„ ์•ˆํ•˜๊ณ  ๋†€์•˜๋‹ค



ํ‘น ์‰ฐ ํ›„๋กœ 2์ฃผ ์ •๋„ ํ† ์ต ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ ์žˆ๋Š”๋ฐ, ํ† ์ต ๊ณต๋ถ€๋งŒ ํ•˜๋ฃจ ์ข…์ผ ํ•˜๋ ค๋‹ˆ ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ์•„๊นŒ์šด ๋Š๋‚Œ์ด ๋“ค์–ด์„œ(์˜์–ด๋ฅผ ๊ทธ๋ž˜๋„ ๊ฝค ํ•˜๋Š” ํŽธ์ด๋ผ) ์Šคํ”„๋ง๋ถ€ํŠธ ๊ณต๋ถ€๋„ ๊ฐ™์ด ์‹œ์ž‘ํ•ด๋ณด๋ ค ํ•œ๋‹ค.


์ฑ… ์ด๋ฆ„ : ์ฝ”๋”ฉ ์ž์œจํ•™์Šต ์Šคํ”„๋ง๋ถ€ํŠธ3 ์ž๋ฐ” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ์ž…๋ฌธ

ํ™˜๊ฒฝ

  • ์ธํ…”๋ฆฌ์ œ์ด
  • JDK-17

์›๋ž˜ ๊ตญ๋น„ ์ˆ˜์—…์—์„œ๋Š” ์ดํด๋ฆฝ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ์ด ์ฑ…์—์„œ๋Š” ์ธํ…”๋ฆฌ์ œ์ด์™€ JDK 17์„ ์‚ฌ์šฉํ•œ๋‹คํ•˜์—ฌ ์ธํ…”๋ฆฌ์ œ์ด๋ฅผ ์ƒˆ๋กœ ์„ค์น˜ํ•ด๋ดค์Œ.



Spring MVC vs Spring Boot


์šฐ์„ , Spring MVC ์™€ Spring Boot์˜ ์ฐจ์ด์ ์„ ์ƒ๊ฐํ•ด๋ดค๋‹ค. ๋‚ด๊ฐ€ ๋“ฃ๊ธฐ๋กœ๋Š” Spring MVC์—์„œ ์ข€ ๋” ๋ฐœ์ „๋œ ๋ฒ„์ „์ด Spring Boot์ธ ๊ฑธ๋กœ ์•Œ๊ณ  ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜ˆ์ „์— ๊ฐœ๋ฐœ๋œ ์›น ํŽ˜์ด์ง€์˜ ๊ฒฝ์šฐ Spring MVC๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ๊ณ , ์ตœ๊ทผ์— ๋งŒ๋“ค์–ด์ง€๋Š” ์›น ํŽ˜์ด์ง€๋Š” Spring Boot๋กœ ๋งŽ์ด๋“ค ๊ฐœ๋ฐœํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

WAS ๋‚ด์žฅ ์„œ๋ฒ„

  • Spring MVC๋Š” ๋‚ด์žฅ๋œ ํ†ฐ์บฃ ์„œ๋ฒ„๊ฐ€ ์—†์–ด์„œ ๋”ฐ๋กœ ์—ฐ๋™ํ•ด์ค˜์•ผ ํ•จ
  • Spring Boot๋Š” ๋‚ด์žฅ๋œ ํ†ฐ์บฃ ์„œ๋ฒ„๊ฐ€ ์žˆ์Œ

์„ค์ • ์ž๋™ํ™”

  • Spring MVC๋Š” ๊ฐ์ข… xml ํŒŒ์ผ์— ์„ค์ •๋“ค์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…์ด ํ•„์š”
  • Spring Boot๋Š” ์•Œ์•„์„œ ์ฒ˜๋ฆฌํ•ด์คŒ! (์ด๊ฒŒ ์ œ์ผ ํŽธํ•œ๋“ฏ,,!)

์•„์ง Spring Boot๋กœ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ง„ ์•Š์•˜์ง€๋งŒ, ์ฑ…์œผ๋กœ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์‹ค์Šต ๋”ฐ๋ผํ•ด๋ณธ ๊ฒฐ๊ณผ ํ™•์‹คํžˆ Spring MVC ๋ณด๋‹ค ํŽธํ•œ ๋ถ€๋ถ„์ด ๋งŽ์•˜๋‹ค.


MVC ํŒจํ„ด

  • Model : ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ์—ญํ• 
  • View : ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” ํ™”๋ฉด ๋‹ด๋‹น
  • Controller : ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ์„œ๋ฒ„์—์„œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์—ญํ• 

โžฃ View ํ…œํ”Œ๋ฆฟ :
  • ์›น ํŽ˜์ด์ง€๋ฅผ ํ•˜๋‚˜์˜ ํ‹€๋กœ ๋งŒ๋“ค๊ณ  ์—ฌ๊ธฐ์— ๋ณ€์ˆ˜๋ฅผ ์‚ฝ์ž…ํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ํŽ˜์ด์ง€์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์—ฌ์ฃผ๋Š” ๊ธฐ์ˆ 
  • Spring์˜ Mustache๋ผ๋Š” ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ๋ทฐ ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ
  • templates ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ *.mustache ํŒŒ์ผ๋กœ ์ƒ์„ฑ
  • html๋กœ๋Š” ์—ฌ๋Ÿฌ ๋ณ€์ˆ˜์— ๋”ฐ๋ผ ๋ฐ”๋€Œ๋Š” ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†์–ด์„œ mustache๋ฅผ ์‚ฌ์šฉ
    ( ์ปจํŠธ๋กค๋Ÿฌ์—์„œ model.addAttribute(๋ณ€์ˆ˜๋ช…,๊ฐ’)์„ ๋ทฐ๋กœ ๋„˜๊ฒจ์ฃผ๋ฉด {{๋ณ€์ˆ˜๋ช…}}์œผ๋กœ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅ )

โžฃ ์ปจํŠธ๋กค๋Ÿฌ :

  • src > main > java ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ *Controller.java๋กœ ์ƒ์„ฑ
  • ์–ด๋…ธํ…Œ์ด์…˜์„ ์ถ”๊ฐ€ํ•ด์ค˜์•ผ ํ•จ. @Controller ์„ ์–ธ ์‹œ
    import org.springframework.stereotype.Controller; ๊ฐ€ ์ž๋™์œผ๋กœ ์ž„ํฌํŠธ (์ด๊ฒŒ ํŽธํ•˜๋‹ค๊ณ  ํ•œ ์ด์œ )
  • ๋ฉ”์†Œ๋“œ ์ž‘์„ฑ ์‹œ @GetMapping("")์œผ๋กœ ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋ฅผ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋งŒ๋“ค์–ด์ค˜์•ผํ•จ. URL ์š”์ฒญ ์ ‘์ˆ˜

์ปจํŠธ๋กค๋Ÿฌ ๋™์ž‘ ์ˆœ์„œ
1. ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์š”์ฒญ์„ ๋ฐ›์•„ ์ ‘์ˆ˜
2. ์š”์ฒญ์— ๋”ฐ๋ฅธ ๋ฉ”์„œ๋“œ ์‹คํ–‰
3. (Model์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด) ๋ทฐ ํ…œํ”Œ๋ฆฟ ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉํ•  ๋ณ€์ˆ˜๋ฅผ ๋“ฑ๋กํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋ธ ๊ฐ์ฒด๋ฅผ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ๊ฐ€์ ธ์˜ด
4. (Model์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด) ๋ชจ๋ธ์—์„œ ์‚ฌ์šฉํ•  ๋ณ€์ˆ˜๋ฅผ ๋“ฑ๋ก
5. return ํ•จ์ˆ˜๋กœ ๋ทฐ ํŽ˜์ด์ง€ ๋ฐ˜ํ™˜


์ฑ… ์—†๋Š” ์ƒํ™ฉ์—์„œ ํ—ท๊ฐˆ๋ฆด ๋•Œ ์ฐพ์•„์™€์„œ ๋ณด๋ ค๊ณ  ๊ธ€ ์จ ๋ดค์Šต๋‹ˆ๋‹ค
MVC๋Š” ์ฒ˜์Œ์— ๋ฐฐ์šธ ๋• ์ •๋ง ์ดํ•ด๊ฐ€ ์•ˆ๋๋Š”๋ฐ ํ”„๋กœ์ ํŠธํ•˜๋ฉด์„œ ์ง์ ‘ ์‚ฌ์šฉํ•ด๋ณด๊ณ , ์ด๋ ‡๊ฒŒ ๋”ฐ๋กœ ๋˜ ๊ณต๋ถ€๋„ ํ•ด๋ณด๋‹ˆ ๋‚˜๋ฆ„ ์ดํ•ด๊ฐ€ ์ž˜ ๋˜๋Š” ๊ฒƒ ๊ฐ™๊ตฐ์š”

์กฐ๋งŒ๊ฐ„ ํ˜ผ์ž์„œ ๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ ํ”„๋กœ์ ํŠธ๋„ ์ง„ํ–‰ํ•ด๋ณผ ์˜ˆ์ •์ธ๋ฐ ํ† ์ต ๊ณต๋ถ€๋„ ํ•˜๋ฉด์„œ ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•„๋งˆ ๋น ๋ฅด๊ฒŒ ์™„์„ฑ์€ ๋ชปํ•  ๋“ฏ ํ•ฉ๋‹ˆ๋‹คใ… ใ… 
profile
์ฝ”๋”ฉ ์ดˆ์งœ์ž…๋‹ˆ๋‹ค
post-custom-banner

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