백엔드/Spring

[Spring] 스프링 타입 컨버터 Spring TypeConverter

kwang2134 2024. 8. 24. 19:16
728x90
728x90

타입 컨버터 TypeConverter

  • 데이터의 처리와 변경을 위해 간편하게 제공하는 것
  • 두 개의 서로 다른 데이터 타입 간의 변환을 처리
  • 예) String -> 객체, String -> Integer 등  로직 내 사용에 용이한 형태로 처리
  • 주로 쿼리 스트링으로 받는 문자를 필요에 따라 변환
  • 스프링의 Converter 인터페이스를 구현하여 사용자 정의 컨버터 생성 가능

컨버전 서비스 ConversionService

  • 스프링에서 제공하는 개별 컨버터들을 모아두고 묶어서 편리하게 사용할 수 있게 하는 기능
  • boolean 타입의 컨버팅 가능 여부 체크 메서드와 실제 컨버팅 메서드 제공
  • DefaultConversionService 구현체를 통해 사용이 가능
  • FormattingConversionService: DefaultConversionService를 확장하여 Formatter도 등록 가능
  • WebConversionService: 스프링 부트의 기본 ConversionService, FormattingConversionService 확장
  • 스프링 내부에서 ConversionService 제공
  • WebMvcConfigurer를 구현한 설정 클래스에서 addFormatters(FormatterRegistry registry) 메서드를 오버라이딩하여 사용
  • registry.addConverter()를 사용하여 컨버터 등록

포맷터 Formatter

  • 데이터의 문자열 표현과 문자열을 객체로 변환하는 작업을 처리
  • 사용자 친화적인 형태로 데이터 출력을 가공
  • 예: 1000 -> 1,000 (쉼표 추가), Date 객체 -> "2024-08-24 20:50:11" (문자열 변환)
  • 날짜와 숫자의 경우 현지화 정보인 Locale이 사용될 수 있음
  • Formatter 인터페이스를 구현하여 사용자 정의 포맷터 생성 가능
  • AnnotationFormatterFactory: 커스텀 어노테이션 기반의 포맷터 생성 가능

컨버전 서비스와 포맷터

  • 컨버터와 동일하게 ConversionService에 추가하여 사용 가능
  • FormattingConversionService: 컨버터와 포맷터를 모두 등록 가능한 ConversionService 구현체
  • WebMvcConfigurer를 상속받은 config 클래스에서 registry.addFormatter()를 사용하여 등록

Spring 제공 기본 포맷터

  • 어노테이션 기반의 포맷터를 지원
  • @NumberFormat: 숫자 관련 형식 지정 포맷터 (예: @NumberFormat(pattern = "###,###"))
  • @DateTimeFormat: 날짜 관련 형식 지정 포맷터 (예: @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss"))
    • Java 8의 LocalDate, LocalTime, LocalDateTime 등도 지원

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 강의 | 김영한 - 인프런 (inflearn.com) 강의 내용 참고

728x90

'백엔드 > Spring' 카테고리의 다른 글

[Spring] JDBC  (0) 2024.08.26
[Spring] 파일 업로드  (0) 2024.08.25
[Spring] 검증 Bean Validation  (0) 2024.08.20
[Spring] 검증 Validation  (0) 2024.08.19
[Spring] 메시지 국제화  (0) 2024.08.03