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 ๋์์๋ฆฌ
์ ์ฒดํ๋ฆ ์์ฒญ โ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ โ ํธ๋ค๋ฌ ๋งคํ โ ํธ๋ค๋ฌ ์ด๋ํฐ โ ์ปจํธ๋กค๋ฌ โ ๋ก์ง ์ํ โ ์ปจํธ๋กค๋ฌ โ ๋ทฐ ๋ฆฌ์กธ๋ฒ โ ์๋ต
ํ๋ก ํธ ์ปจํธ๋กค๋ฌ : ๋งจ ์๋จ์์ ์ ์ ์ ์์ฒญ์ ๋ฐ๋ ์ปจํธ๋กค๋ฌ
DispatcherServlet
์ด ์ญํ ์ํ- ๋ชจ๋ ์์ฒญ์ ๋ฐ์ ํธ๋ค๋ฌ ๋งคํ์๊ฒ ์ ๋ฌ
HandlerMapping
: ์ปจํธ๋กค๋ฌ๋ฅผ ์ฐพ์์ ๋ฐํHandlerAdapter
: ์ปจํธ๋กค๋ฌ์ ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ๋ก์ง ์ํ โ ์ํ ๊ฒฐ๊ณผ๋ฅผ Model & View ๊ฐ์ฒด๋ก ๋ณํ โ DispatcherServlet ์ผ๋ก ์ ๋ฌ โ DispatcherServlet ๊ฐViewResolver
๋ฅผ ์ด์ฉํ์ฌ ๋ทฐ๋ฅผ ์ฐพ๊ฑฐ๋ ์์ฑ โ ๊ทธ ๋ทฐ์ ๊ฐ์ฒด๋ก ๋ฐ์์จ Model์ ๋ฃ์ด ์๋ต ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ์ฌ ์ ์ ์๊ฒ ์ ๋ฌ
๋ ์ด์ด๋(Layered) ์ํคํ ์ฒ
์ฌ๋ฌ ๋ชจ๋๋ค์ ์ผ์ข ์ ๋ ์ด์ด ๋จ์๋ก ๋๋๋ ์ค๊ณ ๋ฐฉ์
Presentation Layer ํ๋ฉด ์กฐ์ or ์ฌ์ฉ์ ์ ๋ ฅ์ ์ฒ๋ฆฌํ๋ ๋ ์ด์ด
Service Layer(Domain) ๋น์ฆ๋์ค์ ๊ด๋ จ๋ ๋๋ฉ์ธ ๋ก์ง์ ์ฒ๋ฆฌํ๋ ๋ ์ด์ด ํ๋์ ๋น์ฆ๋์ค ๋ก์ง์ ํ๋์ ํธ๋์ญ์ ๋จ์๋ก ๋์
Repository Layer(Data Source) ๋๋ฉ์ธ์์ ํ์๋ก ํ๋ ๋ฐ์ดํฐ ์กฐ์์ ์ํ ๋ ์ด์ด