Spring Data Binding - Converter, Formatter
Spring Data Binding
백기선님의 강의인 Spring 프레임워크 핵심 기술 편의 Data Binding
을 학습한 내용을 정리한 글
데이터 바인딩 추상화 : Converter와 Formatter
Spring 3.0이후부터 추가된 Converter와 Formatter 인터페이스
Converter
2개의 제네릭 타입을 받는데, < S, T >의 형태를 가진다.
S 타입을 T 타입으로 변환할 수 있는 변환기이다.
상태정보가 없기 때문에 쓰레드 세이프하다.
ConverterRegistry에 등록해서 사용한다.
Formatter
Formatter는 PropertyEditor의 대체제
Object와 String 간의 변환을 담당한다.
문자열을 Locale에 따라 다국화하는 기능도 제공한다.
FormatterRegistry에 등록해서 사용
ConversionService
실제 변환 작업은 이 인터페이스를 통해 쓰레드-세이프하게 사용할 수 있다.
주로 Spring MVC, SpEL에서 사용한다.
DefaultFormattingConversionService
는 ConversionService의 구현체이다.
FormatterRegistry
는 ConverterRegistry
를 상속 받고 있다.
DefaultFormattingConversionService
는 ConversionService
와 FormatterRegistry
를 구현하고 있다.
그리고 이 DefaultFormattingConversionService
를 상속받아 구현 받은 WebConversionService 클래스가 있다.
WebConversionService는 Springboot에서 사용되는 ConversionService다.
ConversionService 내부에는 굉장히 다양한 형태의 converter들이 포함되어 있다.
궁금하다면 직접 찍어볼 수 있다.
@Component
public class AppRunner implements ApplicationRunner{
@Autowired
ConversionService conversionService;
@Override
public void run(ApplicationArguments args) throws Exception{
System.out.println(conversionService);
}
}
Springboot에서는 일반적으로 conversionService에 WebConversionService가 주입될 것이고, WebConversionService가 포함하고 있는 여러 Converter들을 볼 수 있다.
Reference
인프런 백기선님의 스프링 프레임워크 핵심 기술 강좌