Spring은 효율적인 개발 및 유지를 위해 최적화된 구조를 지원함

프레젠테이션 계층 (API 계층) - 컨트롤러
- 클라이언트의 요청을 받아 처리하고 응답을 생성해 돌려주는 역할
DispatcherServlet이 각 엔드포인트에 맵핑된 Controller를 호출하는 구조로 동작
서비스 계층 - 서비스
- 컨트롤러에 의해 호출되어 실제 비즈니스 로직을 수행함
데이터 액세스 계층 - 레포지토리
- 실제 데이터베이스와 통신
JPA, MyBatis 등 사용하는 기술에 따라 다르게 구성
MVC의 관점에서는:
- 모델:
- 서비스 + 레포지토리 + 도메인(엔티티) 등이 포함
- 클라이언트의 요청에 대한 응답으로 컨트롤러가 전송하는 데이터
- 뷰:
JSP 또는 Thymeleaf 등을 사용할 경우 컨트롤러가 HTML 자체를 전송
- 프론트엔드가 분리된 구조에서는 그것이 곧 뷰