오늘 배운 내용
스프링 숙련 단계 강의에서 HttpMessageConverter, Converter, ConversionService, Formatter에 대해 학습했습니다.
핵심 개념 정리
HttpMessageConverter
- HTTP 요청/응답 본문과 객체 간의 변환을 담당
- JSON ↔ Java 객체 변환이 대표적인 예
- Spring MVC 플로우에서 양방향으로 작동:
- 요청 시: ArgumentResolver에서 @RequestBody 처리
- 응답 시: ReturnValueHandler에서 @ResponseBody 처리
Converter vs Formatter
처음엔 둘이 비슷해 보였지만 차이가 있었습니다:
Converter
- 타입 간 일반적인 변환 (A → B)
- 양방향 처리시 별도 Converter 필요
- 주로 내부 로직에서 사용
Formatter
- String ↔ 객체 간 변환에 특화
- 하나의 Formatter로 양방향 처리 가능
- 사용자 인터페이스 표시 최적화
- Locale(지역화) 지원
// Converter 예시
String → LocalDate (단방향)
// Formatter 예시
"2024-12-25" ↔ LocalDate (양방향, 지역화 지원)
왜 스프링 방식을 쓸까?
- 일관성: 프로젝트 전체에서 같은 변환 로직 적용
- 재사용성: 한 번 정의하면 어디서든 자동 적용
- 유지보수: 변환 로직 변경시 한 곳만 수정
- 설정 중심: 비즈니스 로직과 변환 로직 분리
Spring MVC 전체 플로우 이해

이 구조를 이해하니 @RequestBody, @ResponseBody의 내부 동작이 명확해졌습니다.
오늘의 깨달음
"모든 인터페이스를 외우려 하지 말자"
- 스프링의 다양한 인터페이스들(HttpMessageConverter, ArgumentResolver, ReturnValueHandler 등)
- 정확한 이름을 외우는 것보다 "존재한다는 것"만 기억해두고,
- 필요할 때 찾아보는 것이 더 효율적이라고 생각했습니다.
- 실무에서는 대부분 스프링이 자동 처리, 커스텀 필요시에만 직접 구현
앞으로의 학습 방향
- 전체적인 흐름과 구조 이해에 집중
- 언제 어떤 도구를 써야 하는지 감각 기르기
- 세부 API는 필요시 검색하여 활용
- 실제 프로젝트에서 직접 커스텀 구현해보기
"개발자도 다 찾아가면서 한다"는 말이 와닿는 하루였습니다. 완벽하게 외우려 하지 말고, 큰 그림을 이해하는 데 집중해보겠습니다.
'Spring > 이론' 카테고리의 다른 글
| [트러블슈팅] JPA 상속관계 매핑 3가지 전략 - 실무에서는 언제 쓸까? (0) | 2025.06.04 |
|---|---|
| [트러블슈팅] JPA 연관관계 매핑 vs Repository 패턴 - 어떤 게 더 안전할까? (0) | 2025.06.04 |
| Spring Layered Architecture (0) | 2025.05.09 |
| Spring @PathVariable vs @RequestBody (0) | 2025.05.09 |
| Spring @RestController & ResponseEntity<T>에 대해 (0) | 2025.05.08 |