Spring에서는 사용자의 입력이나 내부적인 타입 변환을 위해 Converter와 Formatter를 제공합니다. 이 두 가지는 유사한 역할을 수행하지만, 명확한 목적과 특징이 다릅니다.
Spring에서 제공하는 Converter는 한 타입에서 다른 타입으로의 단방향 변환을 담당합니다.
public interface Converter<S, T> {
T convert(S source);
}
특징
예시
public class StringToIntegerConverter implements Converter<String, Integer> {
@Override
public Integer convert(String source) {
return Integer.valueOf(source);
}
}
Formatter는 문자열과 객체 간 양방향 변환을 담당하며, 지역화(로케일) 지원과 같은 추가적인 기능을 제공합니다.
public interface Formatter<T> {
T parse(String text, Locale locale) throws ParseException;
String print(T object, Locale locale);
}
특징
예시
public class DateFormatter implements Formatter<LocalDate> {
@Override
public LocalDate parse(String text, Locale locale) throws ParseException {
return LocalDate.parse(text, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
}
@Override
public String print(LocalDate object, Locale locale) {
return object.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
}
}
| 구분 | Converter | Formatter |
|---|---|---|
| 변환 방향 | 단방향 변환 (A -> B) | 양방향 변환 (String ↔ Object) |
| 사용 목적 | 타입 변환 | 문자열 형식 처리 및 로케일 지원 |
| 로케일 지원 | 없음 | 있음 |
| 주요 인터페이스 | Converter<S, T> | Formatter<T> |