ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] Convert VS Formatter
    Spring 2025. 4. 18. 15:27

     

    minecraft-font

    Spring

     

    🔥 Spring에서 데이터를 변환하거나 포맷팅할 때 사용되는 두 가지 핵심 인터페이스   
          ConverterFormatter이다.

     

    ✅ 정리 한 줄 요약

     

    Converter = 시스템 내부의 변환 도우미,
    Formatter = 사용자와 소통하는 포맷 마스터

     

      Convert Formatter
    주요 목적 자료형간의 변환 문자열 ↔ 객체 + 포맷 처리
    변환 방향 단방향 양방향
    사용 위치 내부 로직, 시스템 처리 사용자 입출력, UI 표시
    포맷 지원 없음 날짜, 숫자 포맷
    등록 방법 addConverter(...) addFormatter(...)
    어노테이션 없음 @dateTimeFormat, @NumberFormat

     

     

    🧩 예시로 보는 차이점

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

     

     

    public class LocalDateFormatter implements Formatter<LocalDate> {
        @Override
        public LocalDate parse(String text, Locale locale) {
            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"));
        }
    }

     

     

    상황 사용 도구 이유
    문자열 → Enum Converter 내부 타입으로 변환
    날짜 입력 yyyy-MM-dd Formatter 문자열 → 날짜 객체 (입력값 파싱)
    날짜 응답 시 포맷 변경 Formatter 객체 → 문자열 (포맷 적용)
    숫자 출력 시 천단위 콤마 Formatter 보기 좋게 포맷팅
    단순 ID → 객체 매핑 Converter 자료형 변경 필요 (ex. Long → User)

     

    Tip

    • Converter자료형 매핑에 집중하세요.
    • Formatter입출력에 포맷이 필요한 경우에만 사용하세요.
    • 포맷이 필요 없는 일반적인 변환은 Converter로 충분합니다.
    • Formatter는 너무 많아지면 유지보수가 힘들 수 있으니 남발 금지!

    'Spring' 카테고리의 다른 글

    [Spring] JPA Entity 생명주기 4단계  (0) 2025.05.07
    [Spring] 연속성 컨텍스트  (0) 2025.05.07
    [Spring] Spring Formatter  (0) 2025.04.18
    [Spring] Formatter  (0) 2025.04.18
    [Spring] Converter  (0) 2025.04.17
Designed by Tistory.