반응형
| Converter와 Formatter
DataBinder의 단점을 보완하기 위해 Spring3.0 이후부터 Converter와 Formatter가 도입 되었다.
| Converter
- S 타입을 T 타입으로 변환할 수 있는 매우 일반적인 변환기.
- 상태정보가 없기 때문에 Thread-Safe 함
- ConverterRegistry에 둥록해서 사용
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
public class EventConverter {
@Component
public static class StringToEventConverter implements Converter<String, Event> {
@Override
public Event convert(String source) {
return new Event(Integer.parseInt(source));
}
}
@Component
public static class EventToStringConverter implements Converter<Event, String> {
@Override
public String convert(Event source) {
return source.getId().toString();
}
}
}
| Formatter
- PropertyEditor 대체제 (PropertyEditor는 이 글 참조)
- Object와 String 간의 변환을 담당
- 문자열을 Locale에 따라 다국화하는 기능도 제공한다. (optional)
- FormatterRegistry에 등록해서 사용
import org.springframework.format.Formatter;
import org.springframework.stereotype.Component;
import java.text.ParseException;
import java.util.Locale;
@Component
public class EventFormatter implements Formatter<Event> {
@Override
public Event parse(String s, Locale locale) throws ParseException {
return new Event(Integer.parseInt(s));
}
@Override
public String print(Event event, Locale locale) {
return event.getId().toString();
}
}
| Converter와 Formatter 중 어떤것을 사용해야 할까?
- 둘 다 사용해도 무관
- 다양한 타입으로 변환 할 때는 위해서는 Converter를 사용
- 웹 어플리케이션에서는 일반적으로 구현이 간단한 Fornatter를 많이 사용
| ConversionService
| WebConversionService
반응형