Develop/Java

Spring MVC 간단 정리

IJY 2023. 2. 14. 12:12

Spring MVC에 앞서 일단 MVC에 대해 간단하게 정리를 하고 가도록 하겠습니다.

MVC

MVC란 Model, View, Controller를 의미하며, 소프트웨어 디자인 패턴의 일종

  • Model
    • 클라이언트가 전달하는 정보 또는 데이터, 혹은 클라이언트의 요청에 따라 반환하는 정보 또는 데이터
    • 위 정보 또는 데이터를 가공하고 관리하는 비즈니스 로직도 포함
    • 즉, 정보 또는 데이터 값 및 비즈니스 로직
  • View
    • 클라이언트의 요청에 따른 반환값을 어떻게 표현하는가?에 대한 부분
    • 정적인 HTML을 반환할지, Model 값을 사용하여 동적인 HTML을 반환할지, 그렇다면 어떻게 렌더링 할지 등에 대한 역할
    • 즉, 단어 뜻 그대로 보이는 부분에 대한 것
  • Controller
    • 클라이언트의 요청에 따라 동작을 제어하는 부분
    • 각 요청에 따라 필요한 Model을 호출하여 나온 Model 값을 View에 전달하여 반환하도록 요청
    • 즉, 단어 뜻 그대로 제어 역할을 수행

 

Spring MVC

Spring MVC는 위에서 설명한 MVC 패턴을 Spring framework 내에서 쉽게 구현할 수 있도록 여러 가지 기능을 제공하고 있는 것

  • Model
    • 객체를 통해 표현하며 View에 전달하기 위해 Model 객체에 필요한 데이터를 저장하여 전달
    • 비즈니스 로직은 클래스 레벨에 @Service 어노테이션을 추가하여 구현
    • JSON으로 반환하는 경우에는 View에 전달하지 않고 객체를 JSON 포맷으로 변환하여 HTTP body에 넣어 반환
  • View
    • 정적인 HTML을 반환하거나 템플릿 엔진을 통해 동적인 HTML을 만들어 반환하는 등의 동작
    • 템플릿 엔진으로는 JSP, Thymeleaf, Freemarker, Velocity 등이 존재
  • Controller
    • 클래스 레벨에 @Controller 또는 @RestController 어노테이션을 추가하여 구현
    • @Controller의 경우 메서드 반환값을 ViewResolver에 전달하여 해당 View를 찾아서 반환
    • @RestController의 경우 메서드 반환값을 HttpMessageConverter에 전달하여 알맞게 변환 후 HTTP body에 담아서 반환

Spring MVC의 기본적인 내용을 간단하게 정리하였으며, 내부 동작은 이전에 작성했던 "SpringMVC DispatcherServlet 동작 방식"을 참고해 주세요.