문제 상황
public enum DateType {
DAY, WEEK, MONTH, YEAR;
public static Integer toNumOfDays(DateType type) {
...
}
public static DateType of(String period) {
...
}
}
다음과 같이 Enum 타입을 사용하여 값을 정의하여 사용하고 있었음
Controller에서 받아온 String 값을 DateType.of(str) 과 같은 식으로 타입 변환을 해당 Enum을 사용하는 곳에서 해주어야 했음
해결 방법
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addConverter(new DateTypeConverter());
}
}
public class DateTypeConverter implements Converter<String, DateType> {
@Override
public DateType convert(String source) {
return DateType.of(source);
}
}
위 코드와 같이 CustomConverter 를 등록하면 SpringMVC가 ConversionService 에서 해당 컨버터를 사용하여 타입 변환을 해줌
이후 @RequestParam DateType date
처럼 바로 사용이 가능