📘 마무리 요약 정리
1️⃣ 📦 HttpMessageConverter
| 항목 | 설명 |
|---|---|
| 🎯 사용처 | 요청: @RequestBody, HttpEntity<>, RequestEntity<> 응답: @ResponseBody, HttpEntity<>, ResponseEntity<> |
| 🔝 우선순위 | ① byte[] → ② String → ③ JSON |
| 🧪 JSON 변환 | Jackson 라이브러리 사용 ( @JsonFormat, Deserializer) |
| ⚠️ 주의 | ConversionService가 적용되지 않음 → 본문 변환은 MessageConverter 전용 |
2️⃣ 🧩 Spring 내부 구조


| 항목 | 설명 |
|---|---|
| 🧩 ArgumentResolver | 컨트롤러 메서드 파라미터 변환기 (HTTP 요청값 → 메서드 파라미터) |
| 🔄 ReturnValueHandler | 컨트롤러 반환값 변환기 (리턴값 → HTTP 응답) |
| 🧭 흐름 | 요청 → DispatcherServlet → HandlerAdapter → ArgumentResolver → Controller → ReturnValueHandler → 응답 |
3️⃣ 🔄 Converter & Formatter
| 항목 | 설명 |
|---|---|
| 🔌 Converter | 타입 ↔ 타입 변환 (예: "100" → Integer) |
| 🎛️ Formatter | 문자열 ↔ 객체 변환 + 출력 포맷 (예: "2025-08-18" ↔ LocalDate) |
| 🧠 ConversionService | Converter, Formatter를 일관성 있게 관리 (어댑터 패턴) |
| ⚙️ 적용 위치 | @RequestParam, @ModelAttribute, @PathVariable 등 본문이 아닌 요청 값 처리 |
| 🛠️ WebMvcConfigurer | 커스텀 Converter/Formatter를 등록할 수 있는 확장 포인트 |
| 🚫 MessageConverter와 차이 | HttpMessageConverter는 본문(body) 전용 → ConversionService와 별개 |
🧾 핵심 정리
| 항목 | 설명 |
|---|---|
| 🧩 인터페이스 기반 | 스프링 기능 대부분이 인터페이스로 설계 |
| 🏗️ 구현체 다양 | 기본 구현체들이 이미 풍부하게 제공됨 |
| 👩💻 개발자 역할 | 만들어진 기능을 잘 활용하면 됨 |
| 🚀 확장 포인트 | 필요한 영역만 확장 가능 (Converter, Formatter, MessageConverter 등) |
| 🔍 전제 조건 | 확장을 위해서는 내부 구조 이해 필수 |
🎯 전체 한 줄 요약
ConversionService로 일관 관리