SpringBoot 웹 애플리케이션의 MVC 패턴

Hallelujah·2024년 11월 25일

Spring

목록 보기
19/22
graph TD;
    User[사용자] -->|HTTP 요청| Controller
    Controller -->|요청 처리| Model
    Model -->|데이터 조회/가공| Database[(Database)]
    Database -->|데이터 반환| Model
    Model --> Controller
    Controller -->|데이터 전달| View
    View -->|응답 렌더링| User

MVC의 철학적 기반

  1. 역할 분리의 중요성

    MVC의 핵심은 "하나의 요소는 하나의 역할만 수행해야 한다"는 원칙에서 출발합니다. 이는 소프트웨어 개발의 관심사 분리(Separation of Concerns) 원칙과 직결됩니다.

    • 각 구성 요소가 자신의 책임만 다하면 다른 요소가 변경되더라도 최소한의 영향을 받습니다.
    • 애플리케이션의 복잡성을 줄이고, 디버깅과 유지보수를 용이하게 합니다.
  2. 사용자와 시스템의 상호작용 모델링

    사용자는 단순히 데이터를 요청하거나 입력하지만, 시스템 내부에서는 이를 처리하고 응답하기 위해 다양한 로직이 수행됩니다.

    MVC는 이러한 상호작용을 단계적으로 나누어 체계적으로 정리합니다.

1. Model (모델)

  • 개념:
    • 모델은 애플리케이션의 데이터와 그 데이터를 처리하는 비즈니스 로직을 담당합니다.
    • 데이터베이스와의 상호작용, 데이터를 저장하거나 가공하는 작업을 수행합니다.
    • 사용자가 보거나 수정할 수 있는 데이터를 표현합니다.
  • Spring Boot에서의 구현:
    • Entity 클래스: @Entity를 사용하여 데이터베이스 테이블과 매핑합니다.
    • Repository 인터페이스: JpaRepository 등을 활용해 데이터 접근 계층을 구현합니다.
    • Service 클래스: 비즈니스 로직을 처리하는 계층입니다. @Service로 표시합니다.

2. View (뷰)

  • 개념:
    • 뷰는 사용자에게 데이터를 시각적으로 표현하는 부분입니다.
    • HTML, CSS, JavaScript와 같은 프론트엔드 요소로 구성되며, 사용자의 입력을 수집하는 역할도 합니다.
  • Spring Boot에서의 구현:
    • 템플릿 엔진: Thymeleaf, JSP, 또는 Mustache 등을 사용해 뷰를 작성합니다.
    • 모델 데이터를 전달받아 렌더링합니다.
    • 예: Thymeleaf에서 ${modelAttribute}를 사용해 데이터를 출력.

3. Controller (컨트롤러)

  • 개념:
    • 컨트롤러는 사용자의 요청을 처리하고, 필요한 데이터를 모델에서 가져와 뷰에 전달합니다.
    • 주로 HTTP 요청을 처리하고, 적절한 응답을 반환하는 역할을 합니다.
  • Spring Boot에서의 구현:
    • @Controller 또는 @RestController를 사용해 컨트롤러 클래스를 작성합니다.
    • 요청 매핑은 @RequestMapping 또는 @GetMapping, @PostMapping 등을 사용합니다.
    • 모델 데이터를 뷰로 전달하려면 Model 객체를 활용합니다.

profile
개발자

0개의 댓글