Spring에서의 형변환

Jb·2025년 4월 15일

Spring

목록 보기
5/5
post-thumbnail

[Spring] Converter와 Formatter 이해하기

Spring에서는 사용자의 입력이나 내부적인 타입 변환을 위해 Converter와 Formatter를 제공합니다. 이 두 가지는 유사한 역할을 수행하지만, 명확한 목적과 특징이 다릅니다.


✅ Converter란?

Spring에서 제공하는 Converter는 한 타입에서 다른 타입으로의 단방향 변환을 담당합니다.

  • 주요 인터페이스
public interface Converter<S, T> {
    T convert(S source);
}
  • 특징

    • 한 방향으로만 변환합니다.
    • 주로 간단한 타입 변환을 수행합니다.
    • 문자열과 숫자 간 변환, Enum과 문자열 간 변환 등 다양한 타입 변환이 가능합니다.
  • 예시

public class StringToIntegerConverter implements Converter<String, Integer> {
    @Override
    public Integer convert(String source) {
        return Integer.valueOf(source);
    }
}

✅ Formatter란?

Formatter는 문자열과 객체 간 양방향 변환을 담당하며, 지역화(로케일) 지원과 같은 추가적인 기능을 제공합니다.

  • 주요 인터페이스
public interface Formatter<T> {
    T parse(String text, Locale locale) throws ParseException;
    String print(T object, Locale 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 vs Formatter 정리

구분ConverterFormatter
변환 방향단방향 변환 (A -> B)양방향 변환 (String ↔ Object)
사용 목적타입 변환문자열 형식 처리 및 로케일 지원
로케일 지원없음있음
주요 인터페이스Converter<S, T>Formatter<T>

🎯 사용 시점

  • Converter: Enum ↔ String 변환, 숫자 ↔ 문자열 변환 등 일반적인 타입 변환.
  • Formatter: 날짜, 통화, 숫자 등 로케일을 고려한 형식화 및 문자열 파싱이 필요할 때.

0개의 댓글