GsonHttpMessageConverter
🧩 GsonHttpMessageConverter
정의
GsonHttpMessageConverter는 Spring MVC에서 Gson을 사용해 HTTP 요청/응답 본문을 JSON으로 변환하는HttpMessageConverter이다. 자바 객체와 JSON 문자열 사이의 변환을 담당한다.
@ResponseBody, @RequestBody 처리 시 JSON 직렬화/역직렬화 방식으로 동작한다.
🧩 역할
- Java 객체를 JSON으로 변환한다
- JSON을 Java 객체로 변환한다
- Controller의 요청/응답 본문 처리를 돕는다
- Gson 기반 JSON 포맷을 사용하게 해준다
🛠 적용 방법
WebMvcConfigurer에 등록
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "org.infinity.server.controller.api")
public class APIConfiguration implements WebMvcConfigurer {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
Gson gson = new GsonBuilder().create();
GsonHttpMessageConverter converter = new GsonHttpMessageConverter(gson);
converters.add(converter);
}
}
커스텀 직렬화 추가
public class LocalDateSerializer implements JsonSerializer<LocalDate> {
private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
@Override
public JsonElement serialize(LocalDate localDate, Type type, JsonSerializationContext context) {
return new JsonPrimitive(formatter.format(localDate));
}
}
Gson gson = new GsonBuilder()
.registerTypeAdapter(LocalDate.class, new LocalDateSerializer())
.create();
GsonHttpMessageConverter converter = new GsonHttpMessageConverter(gson);
🧩 특징
- Gson 기반 JSON 변환을 제공한다
- Spring MVC의 메시지 변환 체계에 포함된다
- 객체와 JSON 사이의 변환을 자동으로 처리한다
- 커스텀 타입 어댑터를 등록할 수 있다
⚠️ 주의사항
- Spring Boot 기본 설정에서는 Jackson이 기본인 경우가 많다.
- Gson을 쓰려면 메시지 변환기 설정을 확인해야 한다.
- 커스텀 직렬화가 많아지면 유지보수 포인트가 늘어날 수 있다.
- JSON 포맷 정책이 프로젝트 전반과 일치하는지 확인하는 것이 좋다.
📌 정리
GsonHttpMessageConverter는 Spring MVC에서 Gson으로 JSON을 처리하는 메시지 변환기다.- 요청 본문과 응답 본문을 객체와 JSON으로 변환한다.
- Gson 기반 JSON 정책을 쓰고 싶을 때 설정한다.
댓글남기기