저번 포스트에서 Spring MVC의 내부적 흐름과 MVC에대한 간단한 개념과 설명을 했었다. 이번 포스트에서는 Spring의 3계층의 구조에 대한 내용을 다루려고 한다.
3단계 구조는 많은 영역에서 코드베이스를 조직하기 위해 널리 받아들여지는 방법이며 고유한 책임을 가진다.
그렇다면 저번에 포스팅한 MVC패턴과 3계층 구조는 어떤 관련이 있을까?
MVC 패턴은 사용자 인터페이스에서 로직(Presentation 단계)을 구성하는 것에만 관심이 있다.
MVC 패턴은 3단계가 있다.
Model : 애플리케이션의 business layer
- 시스템의 business logic을 포함하는 데이터 계층이며, 애플리케이션의 상태를 나타낸다. 이 단계는 Presentation 단계와 무관하다(독립적).
- Controller가 Model에서 데이터를 받아서 View에게 전달해준다.
Controller: 애플리케이션의 흐름을 관리
- Controller는 Model과 View 사이에서 작동한다.
- View에서 요청을 받고 필요한 유효성 검사를 포함하여 처리한다.
View : 애플리케이션의 Presentation 단계를 정의
- View는 UI의 일부 형태인 애플리케이션의 결과를 나타낸다.
- Presentation 단계는 Controller에서 가져온 Model 데이터를 나타낸다. ex) HTML
3계층 구조 | MVC | |
---|---|---|
내용 | 애플리케이션의 모든 코드를 구조화 | 두 단계를 연결 ( Presentation & Business logic ) |
범위 | 전반적 | Presentation 단계(사용자 인터페이스의 로직을 구성) |
class | layer | 기능 |
---|---|---|
Controller classes | Presentation layer | 입력, 수신, 검증, Model 객체, MAV 반환 기능 수행 |
Service classes | Business logic layer | 계산, 데이터 변환, 데이터 프로세스, 레코드간 검증 |
Repository classes | Data access layer | CRUD (관계형 또는 비관계형) |
Service classes는 Controller classes에 의하여 호출되며, Repository또는 다른 Service들을 호출 가능하다.
모든 class는 일반적으로 각자의 패키지 안에 저장한다. Spring boot와 thymleaf를 사용한, MVC 웹 애플리케이션의 구조도를 예시로 보면, controller 패키지 안에 contrller class가 있으며 model, repositroy, service도 동일하다.