πŸ”„ νƒ€μž… λ³€ν™˜: Converter & Formatter

Converter

  • νƒ€μž… κ°„ 단방ν–₯ λ³€ν™˜κΈ° (Object β†’ Object)
  • 예: λ¬Έμžμ—΄(String)을 Enum νƒ€μž…μœΌλ‘œ λ³€ν™˜
  • Converter<S, T> μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜μ—¬ μ‚¬μš©
  • ex. Enum λ³€ν™˜ 등에 μ‚¬μš©
@Component
public class StringToRoleConverter implements Converter<String, Role> {
    @Override
    public Role convert(String source) {
        return Role.valueOf(source.toUpperCase());
    }
}

적용 방법

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addFormatters(FormatterRegistry registry) {
        registry.addConverter(new StringToRoleConverter());
    }
}

Formatter

  • λ¬Έμžμ—΄ ←> 객체 κ°„ μ–‘λ°©ν–₯ λ³€ν™˜μ„ 지원
  • 주둜 λ‚ μ§œ, 숫자, 화폐 λ“±μ˜ μ‚¬μš©μž μΉœν™”μ  포맷 μ²˜λ¦¬μ— μ‚¬μš©
  • Formatter<T> μΈν„°νŽ˜μ΄μŠ€ κ΅¬ν˜„
@Component
public class LocalDateFormatter implements Formatter<LocalDate> {
 
    private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
 
    @Override
    public LocalDate parse(String text, Locale locale) {
        return LocalDate.parse(text, formatter);
    }
 
    @Override
    public String print(LocalDate object, Locale locale) {
        return object.format(formatter);
    }
}

βœ… Formatter도 WebMvcConfigurer.addFormatters()λ₯Ό 톡해 등둝해야 적용됨