Spring? Spring Boot? Spring MVC? - comento-backend-camp/ticket-reservation-server-hyejung GitHub Wiki

Spring

Spring์€ Spring Framework, Spring Boot, Spring data ๋“ฑ ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ๋“ค์˜ ๋ชจ์Œ์ด๋‹ค Spring Framework์„ ์ด์šฉํ•˜๋ฉด ์›น๊ฐœ๋ฐœ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํด๋ผ์šฐ๋“œ ๋“ฑ ๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅํ•˜๋‹ค.

Spring์˜ ํ•ต์‹ฌ์š”์†Œ๋Š” ์•ฑ ์ˆ˜์ค€์˜ ์ธํ”„๋ผ ์ง€์›์ด๋‹ค.

  • ์•ฑ ์ˆ˜์ค€์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณต
  • JDBC, JSP ๋ฐ Java Servlet๊ณผ ๊ฐ™์€ ๊ธฐ์กด Java ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ API์— ๋น„ํ•ด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ด ํ›จ์”ฌ ์‰ฌ์›Œ์ง
  • DI์™€ IoC๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋А์Šจํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ์–ด ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๊ณ , ๋‹จ์œ„ํ…Œ์ŠคํŠธ๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•ด์คŒ
    • AOP (Aspect-Oriented Programming), POJO (Plain Old Java Object) ๋ฐ DI (dependency injection)์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœ
  • Spring ๊ฐœ์ฒด ๊ด€๊ณ„ํ˜• ๋งคํ•‘(Spring ORM), Spring Web Flow ๋ฐ Spring Web MVC ๋“ฑ ๋‹ค์–‘ํ•œ ๋ชจ๋“ˆ ์ œ๊ณต
    • ๋ชจ๋“ˆ์„ ๋ณ„๋„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
    • ๋ชจ๋“ˆ์€ ์›น ์‘์šฉ ํ”„๋กœ๊ทธ๋žญ๋ฉ”์„œ ๋” ๋‚˜์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๋ฃนํ™” ๊ฐ€๋Šฅ

Spring Boot

Spring Framework ๊ธฐ๋ฐ˜ (๊ธฐ์กด Spring ์œ„์— ๊ตฌ์ถ•)

  • ์Šคํ”„๋ง์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉด์„œ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ๋ชจ๋“ˆ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์กฐํ•ฉ์ด ์ž๋™์œผ๋กœ ๋˜์–ด์žˆ์Œ
  • ๋ชจ๋“  ๊ฒƒ์ด ์ž๋™์œผ๋กœ ๊ตฌ์„ฑ
    • Spring Framework๋Š” Bean์œผ๋กœ ๋“ฑ๋กํ•ด์ฃผ์–ด์•ผ ํ•˜์ง€๋งŒ, Spring Boot๋Š” ์˜์กด์„ฑ๋งŒ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค๋ฉด ymlํŒŒ์ผ์„ ๋™ํ•ด ์ž๋™์œผ๋กœ ์ฃผ์ž…์‹œ์ผœ ์„ค์ •ํ•ด์คŒ
  • ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ๊ธฐ๋ฐ˜ ํ”„๋ ˆ์ž„ ์›Œํฌ (์งง์€ ์‹œ๊ฐ„ ๋‚ด์— ํ”„๋กœ๋•์…˜ ์ค€๋น„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ)
  • REST API๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ ์‹œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • war, jar ํŒŒ์ผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ ์ œ๊ณต
  • ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋ฏธ๋ฆฌ ์กฐํ•ฉ๋˜์–ด ์žˆ์Œ
  • ๋ณต์žกํ•œ ์„ค์ •์ด ์ž๋™ ์ฒ˜๋ฆฌ
  • ๋‚ด์žฅ์„œ๋ฒ„๋ฅผ ํฌํ•จ(ํ†ฐ์บฃ)ํ•˜์—ฌ ๋ณ„๋„๋กœ ์›น์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•„๋„ ๋ฐ”๋กœ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ
  • WAS์— ๋ฐฐํฌํ•˜์ง€ ์•Š๊ณ ๋„ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ jar ํŒŒ์ผ๋กœ ์›น์•ฑ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ

Spring MVC

Spring MVC Framework๋Š” Model, View, Controller๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ†ตํ•ฉ์„ ์›ํ• ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค.

  • MVC : Model-View-Controller
    • Model : ๋ฐ์ดํ„ฐ
    • View : ๋ Œ๋”๋ง๋˜์–ด ๋ณด์—ฌ์ง€๋Š” ํŽ˜์ด์ง€
    • Controller : ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋ฐ›์•„ ์‘๋‹ต์„ ์ฃผ๋Š” ๋กœ์ง ๋‹ด๋‹น
  • Model ๊ฐ์ฒด๋Š” Map์„ ์‚ฌ์šฉํ•˜์—ฌ View์™€ Controller ๊ฐ„ ์ „๋‹ฌ ๊ฐ€๋Šฅํ•˜๋‹ค.

Spring MVC, Spring JDBC ๋“ฑ๋“ฑ์€ Spring ํ”„๋กœ์ ํŠธ ๋‚ด ํ•˜์œ„ ํ”„๋กœ์ ํŠธ(๋ชจ๋“ˆ)์ด๋‹ค.

Spring MVC ๋™์ž‘์›๋ฆฌ

์ „์ฒดํ๋ฆ„ ์š”์ฒญ โ†’ ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ โ†’ ํ•ธ๋“ค๋Ÿฌ ๋งคํ•‘ โ†’ ํ•ธ๋“ค๋Ÿฌ ์–ด๋Œ‘ํ„ฐ โ†’ ์ปจํŠธ๋กค๋Ÿฌ โ†’ ๋กœ์ง ์ˆ˜ํ–‰ โ†’ ์ปจํŠธ๋กค๋Ÿฌ โ†’ ๋ทฐ ๋ฆฌ์กธ๋ฒ„ โ†’ ์‘๋‹ต

Spring MVC ๋™์ž‘์›๋ฆฌ

ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ : ๋งจ ์•ž๋‹จ์—์„œ ์œ ์ €์˜ ์š”์ฒญ์„ ๋ฐ›๋Š” ์ปจํŠธ๋กค๋Ÿฌ

  • DispatcherServlet ์ด ์—ญํ•  ์ˆ˜ํ–‰
  • ๋ชจ๋“  ์š”์ฒญ์„ ๋ฐ›์•„ ํ•ธ๋“ค๋Ÿฌ ๋งคํ•‘์—๊ฒŒ ์ „๋‹ฌ HandlerMapping: ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ฐพ์•„์„œ ๋ฐ˜ํ™˜ HandlerAdapter: ์ปจํŠธ๋กค๋Ÿฌ์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋กœ์ง ์ˆ˜ํ–‰ โ†’ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ Model & View ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ โ†’ DispatcherServlet ์œผ๋กœ ์ „๋‹ฌ โ†’ DispatcherServlet ๊ฐ€ ViewResolver๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ทฐ๋ฅผ ์ฐพ๊ฑฐ๋‚˜ ์ƒ์„ฑ โ†’ ๊ทธ ๋ทฐ์— ๊ฐ์ฒด๋กœ ๋ฐ›์•„์˜จ Model์„ ๋„ฃ์–ด ์‘๋‹ต ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์œ ์ €์—๊ฒŒ ์ „๋‹ฌ

๋ ˆ์ด์–ด๋“œ(Layered) ์•„ํ‚คํ…์ฒ˜

์—ฌ๋Ÿฌ ๋ชจ๋“ˆ๋“ค์„ ์ผ์ข…์˜ ๋ ˆ์ด์–ด ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„๋Š” ์„ค๊ณ„ ๋ฐฉ์‹

๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜

Presentation Layer ํ™”๋ฉด ์กฐ์ž‘ or ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ ˆ์ด์–ด

Service Layer(Domain) ๋น„์ฆˆ๋‹ˆ์Šค์™€ ๊ด€๋ จ๋œ ๋„๋ฉ”์ธ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ ˆ์ด์–ด ํ•˜๋‚˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ๋‹จ์œ„๋กœ ๋™์ž‘

Repository Layer(Data Source) ๋„๋ฉ”์ธ์—์„œ ํ•„์š”๋กœ ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์กฐ์ž‘์„ ์œ„ํ•œ ๋ ˆ์ด์–ด

์ฐธ๊ณ ์ž๋ฃŒ

[๋ถ€์ŠคํŠธ์ฝ”์Šค ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ] ์Šคํ”„๋ง MVC