데이터 바인딩 추상화
프로퍼티의 값을 타겟 객체에 설정하는 것
입력값은 대부분 문자열인데, 그 값을 객체가 가지고 있는 int, long, Boolean, Date 등 심지어 Event, Book 같은 도메인 타입으로도 변환해서 넣어주는 기능
DataBinder
데이터 바인딩에 사용되는 인터페이스
PropertyEditor
고전적인 방식
thread-safe 하지 않다.
상태 정보를 저장하고 있어서 싱글톤 빈으로 등록해 쓰면 큰일난다.
Object와 String 간의 변환만 할 수 있어 사용 범위가 제한적이다.
여러가지 위험한 점들이 많기 때문에 Spring 3.0부터는 다음의 기능을 사용한다.
Converter
S 타입에서 T 타입으로 변환할 수 있는 일반적인 변환기
상태 정보가 없어 thread-safe 하다.
ConverterRegistry에 등록해서 사용한다.
Formatter
PropertyEditor 대체제
좀 더 웹에 최적화된 인터페이스
Object와 String 간의 변환을 담당한다.
문자열을 Locale에 따라 다국화하는 기능도 제공한다.
FormatterRegistry에 등록해서 사용한다.
ConversionService
지금까지 썼던 Formatter 등의 실제 변환 작업은 이 인터페이스를 통한다.
thread-safe하게 사용할 수 있다.
스프링 MVC, 빈(value) 설정, SpEL에서 사용한다.
DefaultFormattingConversionService
ConversionService 역할을 하면서도 FormatterRegistry 역할도 한다.
여러 기본 컨버터와 포매터를 등록해준다.
스프링 부트
웹 애플리케이션인 경우 스프링 부트가 WebConversionService를 빈으로 등록해준다.
DefaultFormattingConversionSerivce를 상속하고 있어 더 많은 기능을 가진다.
Formatter와 Converter 빈을 찾아 자동으로 등록해 준다.
Last updated