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 동작 방식"을 참고해 주세요.
'Develop > Java' 카테고리의 다른 글
Spring 기동시 bean 초기화 메서드 호출 방법 (0) | 2022.11.29 |
---|---|
Java - File read 2가지 방법 (0) | 2022.11.29 |
JPA Fetch Type (1) | 2022.09.09 |
Collection framwork (0) | 2022.07.26 |
제네릭(Generic)이란? (0) | 2022.07.25 |