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 |