728x90

MVC 패턴(Model-View-Controller)이란?

소프트웨어 설계 패턴 중 하나로, 애플리케이션을 세 개의 역할로 나누어 유지보수와 확장성을 높이는 구조


1. MVC 패턴이 왜 필요할까?

📌 애플리케이션이 복잡해지면 유지보수가 어려워져!
👉 비즈니스 로직(데이터 처리)과 UI(화면)이 뒤섞이면 코드가 지저분해짐
👉 이를 해결하기 위해 역할을 분리한 것이 MVC 패턴!

 


2. MVC 패턴의 구성 요소

✔ (1) Model(모델) – 데이터 및 비즈니스 로직 담당

  • DB와 연결되어 데이터를 처리하는 역할
  • Repository를 통해 데이터를 읽고 쓰는 역할 수행
  • 예: 회원 정보 조회, 상품 목록 불러오기
public class User {
    private String name;
    private int age;
    
    // 생성자, getter, setter
}

✔ (2) View(뷰) – 사용자 인터페이스(UI) 담당

  • 사용자에게 보여줄 화면
  • Model에서 받은 데이터를 화면에 출력
  • 예: HTML, JSP, Thymeleaf, React, Vue 등
<h1>회원 정보</h1>
<p>이름: ${user.name}</p>
<p>나이: ${user.age}</p>

✔ (3) Controller(컨트롤러) – 요청 처리 및 흐름 제어

  • 사용자의 요청을 받고 Model을 호출한 후 View에 전달
  • 예: 사용자가 /user 페이지를 요청하면, UserController가 해당 요청을 처리하고 Model을 전달
@Controller
@RequestMapping("/user")
public class UserController {

    @GetMapping("/{id}")
    public String getUser(@PathVariable Long id, Model model) {
        User user = userService.getUserById(id);
        model.addAttribute("user", user);
        return "userView"; // View 이름 반환
    }
}
 

4. Spring MVC에서 MVC 패턴 적용

Spring에서는 Controller, Service, Repository 를 분리하여 MVC 패턴을 구현해!

📌 Spring MVC 구조

[사용자]  --->  [Controller]  --->  [Service]  --->  [Repository]  --->  [DB]
                     ⬇
                  [View]

Controller: 요청을 받고 Service 호출
Service: 비즈니스 로직 처리
Repository: DB 접근 및 데이터 저장


5. MVC 패턴을 사용하면 좋은 점

유지보수 용이: 역할이 분리되어 있어서 코드 수정이 쉬움
재사용성 증가: 같은 Model을 다양한 View에서 활용 가능
협업 용이: 백엔드 개발자(Controller, Model)와 프론트엔드 개발자(View) 역할 분리 가능


6. 정리

MVC 패턴은 역할을 나누어 코드 관리를 효율적으로 하기 위한 설계 패턴
Model(데이터) / View(UI) / Controller(요청 처리) 로 구성
Spring에서는 Controller-Service-Repository 구조로 MVC를 적용
유지보수와 확장성이 뛰어난 구조

728x90