소프트웨어 디자인 패턴 중 하나
Model, View, Controller의 약자로 하나의 애플리케이션, 프로젝트를 구성할 때 요소를 세가지의 역할로 구분한 패턴
Model
애플리케이션의 정보/데이터를 나타내며 정보/데이터 가공을 책임지는 컴포넌트
View
사용자 인터페이스 요소(사용자가 볼 수 있는 화면)
데이터 및 객체의 입력, 출력을 담당
Controller
데이터와 비즈니스 로직 사이의 상호 동작을 관리(Model과 View통제)
프로그램의 작동 순서, 방식을 제어
설계가 간단하여 작은 프로젝트에 적합하며 개발 속도가 빠른 대신 코드가 복잡해져 유지 보수가 어렵다.
비교적 큰 프로젝트에 적합하고 설계 단계에서 비용이 많이 들어 개발 속도가 느린 단점이 있지만 확장에 용이하고 유지보수가 수월
MVC2의 발전된 형태
1. 클라이언트의 요청을 FrontController인 DispatcherServlet이 받는다.
2. HanlderMapping을 통해 요청에 해당하는 Controller를 실행한다.
3. Controller는 적절한 서비스 객체 호출
4. Service는 DB 처리를 위해 DAO를 이용하여 데이터 요청
5. DAO는 mybatis를 이용하는 Mapper를 통해 작업 처리
6. 처리된 결과가 Controller로 전달
7. View Resolver를 통해 결과를 받을 View를 찾아서 전달
8. View는 전달 받은 결과를 다시 DispatcherServlet에게 전달
9. DispatcherServlet은 클라이언트에게 전달
starter란?
특정 목적을 달성하기 위한 의존성 그룹.
starter는 npm처럼 간편하게 dependency를 제공
예를 들어 JPA가 필요하다면 prom.xml(메이븐)이나 build.gradle(그레이들)에 'spring-boot-starter-data-jpa'만 추가해주면 spring boot가 그에 필요한 라이브러리들을 알아서 받아온다.
spring-boot-starter-* // starter 명명 규칙