MVC (Model-View-Controller)란 ?
- 소프트웨어 공학에서 사용되는, 애플리케이션을 개발할 때 사용하는 디자인 패턴
- 개발 영역을 Model, View, Controller로 구분해 각 역할에 맞게 코드를 작성하는 방식

📲 Model
- 데이터의 저장소 (데이터베이스, 상수, 초기화값, 변수 등)
- 데이터, 정보들의 가공을 책임지는 컴포넌트
- Controller의 요청에 따라 사용자가 요청한 내용 업데이트
💻 View
- 데이터 및 객체의 입력, 보여주는 출력 담당
- input 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소
- Model에서 업데이트된 내용을 Controller로부터 받아 Client로 전송해 결과를 보여줌.
🕹️ Controller
- 데이터(Model)와 사용자 인터페이스 요소들(View)을 잇는 다리 역할
- Client가 접근한 URL에 따라 요청사항을 파악한 후 그 요청에 맞는 데이터를 Model에 의뢰해 데이터를 View에게 전송함.
필요한 이유 ?
- 프로젝트의 크기가 커지면서 API가 늘어나게 되면 코드들이 점점 늘어남 .. 가독성 BAD 😥
- 비즈니스 로직과 UI 로직 분리 -> 독립적인 유지보수 수행 가능, 가독성 GOOD 😃
- Model과 View가 다른 컴포넌트들에 종속 X -> 애플리케이션의 확장성, 유연성에 유리함.
- 중복 코딩의 문제점 제거
Spring MVC
구조

Controller
- Client에서 요청이 들어올 때, 해당 요청을 수행할 비즈니스 로직을 제어하는 객체
- 세부적으로 Service단을 만들어 해당 요청을 객체 지향적으로 관리
Service
- 세분화된 비즈니스 로직을 처리하는 객체
- Controller가 Request를 받으면 적절한 Service에 전달 -> Service는 비즈니스 로직 처리
- DAO로 DB 접근
DAO (Data Access Object)
- DB에 접근 -> 데이터 조회/조작하는 기능
- 효율적인 커넥션 관리와 보안성