[Spring] 심화 Spring 1주차 마무리 요약 정리

이연우·2025년 8월 18일

TIL

목록 보기
82/100

📘 마무리 요약 정리

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)
🧠 ConversionServiceConverter, Formatter를 일관성 있게 관리 (어댑터 패턴)
⚙️ 적용 위치@RequestParam, @ModelAttribute, @PathVariable
본문이 아닌 요청 값 처리
🛠️ WebMvcConfigurer커스텀 Converter/Formatter를 등록할 수 있는 확장 포인트
🚫 MessageConverter와 차이HttpMessageConverter는 본문(body) 전용 → ConversionService와 별개

🧾 핵심 정리

항목설명
🧩 인터페이스 기반스프링 기능 대부분이 인터페이스로 설계
🏗️ 구현체 다양기본 구현체들이 이미 풍부하게 제공됨
👩‍💻 개발자 역할만들어진 기능을 잘 활용하면 됨
🚀 확장 포인트필요한 영역만 확장 가능 (Converter, Formatter, MessageConverter 등)
🔍 전제 조건확장을 위해서는 내부 구조 이해 필수

🎯 전체 한 줄 요약

  • HttpMessageConverter 📦: HTTP 본문(body) 변환 담당 (요청/응답 ↔ 객체)
  • ArgumentResolver 🧩 / ReturnValueHandler 🔄: 컨트롤러 입출력 매개변수 처리기
  • Converter/Formatter 🔌🎛️: 타입/문자열 변환 → ConversionService로 일관 관리
  • 핵심 🧠: 스프링은 인터페이스 기반 확장 구조 → 필요한 부분만 확장해서 사용하면 됨

0개의 댓글