Spring Data Binding - Converter, Formatter

Spring Data Binding

백기선님의 강의인 Spring 프레임워크 핵심 기술 편의 Data Binding을 학습한 내용을 정리한 글

데이터 바인딩 추상화 : Converter와 Formatter

Spring 3.0이후부터 추가된 ConverterFormatter 인터페이스

Converter

2개의 제네릭 타입을 받는데, < S, T >의 형태를 가진다.

S 타입을 T 타입으로 변환할 수 있는 변환기이다.

상태정보가 없기 때문에 쓰레드 세이프하다.

ConverterRegistry에 등록해서 사용한다.

Formatter

Formatter는 PropertyEditor의 대체제

Object와 String 간의 변환을 담당한다.

문자열을 Locale에 따라 다국화하는 기능도 제공한다.

FormatterRegistry에 등록해서 사용

ConversionService

실제 변환 작업은 이 인터페이스를 통해 쓰레드-세이프하게 사용할 수 있다.

주로 Spring MVC, SpEL에서 사용한다.

DefaultFormattingConversionService는 ConversionService의 구현체이다.

FormatterRegistryConverterRegistry를 상속 받고 있다.

DefaultFormattingConversionServiceConversionServiceFormatterRegistry를 구현하고 있다.

그리고 이 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

인프런 백기선님의 스프링 프레임워크 핵심 기술 강좌



© 2022. by minkuk

Powered by minkuk