🧩 GsonHttpMessageConverter

정의

GsonHttpMessageConverterSpring 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 정책을 쓰고 싶을 때 설정한다.

연결문서

댓글남기기