Spring/이론
Spring MVC 구조
JuNo_12
2025. 5. 8. 11:23
MVC란?
| 구성요소 | 역할 | 설명 |
| Model | 데이터, 비즈니스 로직 | DB에서 가져온 데이터를 보관하고 처리하는 역할. 예: DB 모델, DTO, 서비스 로직 등 |
| View | 화면(UI) | 사용자에게 보여지는 부분. 예: HTML, JSP, Thymeleaf 템플릿 |
| Controller | 흐름 제어 | 사용자의 요청을 받고, Model과 View 사이를 연결 ( @Controller, @RestController 클래스) |
Spring MVC 흐름 요약
- 사용자가 요청 (ex. /user)
- DispatcherServlet이 요청을 받는다. (웹 애플리케이션에서 들어오는 모든 HTTP 요청을 가장 먼저 받아서, 적절한 Controller로 전달하는 중앙 처리자 역할)
- 적절한 Controller에게 전달
- Controller는 필요한 Model 데이터를 준비
- 그 데이터를 포함해서 View를 반환
- DispatcherServlet이 최종적으로 HTML 등으로 렌더링된 결과를 클라이언트에게 응답
httpmessegeconverter란?
: Spring MVC에서 HTTP 요청/응답을 Java 객체로 변환해주는 인터페이스. 쉽게 말해, 클라이언트가 보낸 JSON이나 TEXT 같은 데이터를 Java 객체로 바꾸거나, 반대로 Java 객체를 JSON, TEXT 등으로 바꿔서 응답할 수 있게 해주는 변환기 역할
왜 필요한가?
클라이언트 ↔ 서버 간 통신은 HTTP 프로토콜 기반이다.
클라이언트(예: 브라우저, 프론트엔드 앱)가 서버로 데이터를 보낼 때는 자바가 아니라 보통
- JSON
- XML
- Form Data
- Plain Text
같은 형식으로 데이터를 전송합니다.
( HTTP와 Java 객체 간의 자동 변환 도구)
언제 동작할까?
- @RequestBody, @ResponseBody, 또는 @RestController 사용 시 자동으로 동작
- Content-Type, Accept 헤더를 보고 어떤 변환기를 쓸지 Spring이 자동으로 선택
어노테이션 역할 주로 사용하는 형식 사용처
| 어노테이션 | 역할 | 주로 사용하는 형식 | 사용처 |
| @RequestBody | HTTP 요청 본문을 Java 객체로 변환 | JSON, XML 등 | 클라이언트가 보낸 JSON 데이터를 자바 객체로 변환할 때 사용 |
| @ResponseBody | Java 객체를 HTTP 응답 본문에 변환하여 클라이언트에 반환 | JSON, XML 등 | 서버에서 Java 객체를 JSON 형태로 클라이언트에 응답할 때 사용 |
| @RestController | @Controller + @ResponseBody의 조합, 모든 메서드에 @ResponseBody가 자동 적용됨 | JSON | RESTful API 구현 시, 클라이언트와 서버 간 데이터 교환 처리 |
RESTful API는 웹 애플리케이션이나 웹 서비스에서 데이터를 효율적이고 일관성 있게 전송하는 방법 중 하나로, REST(Representational State Transfer) 아키텍처 스타일을 따르는 API