Spring MVC 사용해보기

2024. 4. 12. 02:47Spring Boot/Spring Core

반응형

들어가며

Spring MVC는 웹 어플리케이션을 제작하는 데 필요한 Spring 하위 프레임워크이다.

MVC는 Model-View-Controller 의 약자로, 각각의 요소로 관심사를 나누어 어플리케이션을 구축하는 디자인 패턴이다.

Spring MVC란 무엇인가

Spring MVC는 Spring Core의 하위 프레임워크이므로 다른 Spring 하위 프레임워크와 마찬가지로 IoC(제어 역전), DI(의존성 주입)을 활용한다.

Spring MVC는 디자인 패턴을 구현하기 위한 IoC 구성요소로 DispatcherServlet 이라는 클래스를 제공한다.

DispatcherServlet은 Request를 각 Controller, Model, View에 매핑하는 역할을 한다.

Spring MVC의 구성요소

  • Model : 어플리케이션의 데이터 레이어
  • Controller : 어플리케이션의 비즈니스 로직. @Controller 어노테이션을 포함한다.
  • View : 어플리케이션의 프론트 페이지. 일반적으로 JSP + JSTL로 작성되며, Thymeleaf 같은 템플릿 엔진이 사용되기도 한다.
  • Front Controller : DispatcherServlet이 이 역할을 담당하며, MVC 패턴 전반의 흐름을 제어한다.

Spring MVC 의 동작 흐름

  • 모든 요청은 front controller의 DispatcherServlet으로 인터셉트된다.
  • DispatcherServlet은 요청을 매핑하는 핸들러를 기반으로 요청을 controller로 보낸다.
  • controller 는 Model(비즈니스 로직 반환값)과 View(화면)을 리턴한다.
  • DispatcherServlet은 view resolver를 통해 화면을 해석하여 적용한다.

Spring MVC의 장점

  • 역할 분리 : Model, Controller, View 등으로 관심사가 분리되어 있어 각 목적에 맞게 개발할 수 있다.
  • 경량 컨테이너 : Servlet 컨테이너가 무겁지 않아 개발과 배포가 어렵지 않다.
  • 환경설정 기능 : Controller, Business Object, Validator 등의 설정을 편하게 관리할 수 있다.
  • 비즈니스 로직 재사용 가능
  • 테스트 : JavaBeans 클래스를 사용해 테스트 데이터를 쉽게 작성할 수 있다.
  • 유연한 매핑 : 페이지 매핑을 어노테이션으로 손쉽게 할 수 있다.

예제

참고한 포스트에서는 jsp를 view로 사용하였지만 본 포스팅에서는 html을 사용하였다.

예제 구현 목록

  • gradle을 통해 dependency 추가
  • controller 작성
  • view 에 사용한 html 작성
  • 서버 기동

의존성 추가

# build.gradle

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
}
  • 템플릿(view) 엔진으로 thymeleaf 를 사용하였다.

Controller 작성

@Controller
public class MVCHelloController {
    @GetMapping("/mvc-test")
    public String display() {
        return "mvc-test";
    }
}

View 작성

<!-- src/main/resources/templates/mvc-test.html -->

<html>
<body>
<p>MVC TEST</p>
</body>
</html>

서버 실행

API 호출

Resources

반응형