목표

  • 사용자가 request body로 string 값을 보냈을 때, enum으로 자동으로 매핑시켜서 컨트롤러 파라미터로 넘어오기를 원한다.

Spring 기본 처리

  • Spring MVC에서는 StringToEnumConverterFactory 클래스가 StringEnum 객체로 변환하려고 시도한다.
  • 이 때, Enum.valueOf() 메소드를 통해서 변환을 시도한다.
  • 이 때 일치하는 Enum 타입이 없다면, ConversionFailedException이 발생한다.

Custom Converter 사용하기

  • Converter 인터페이스를 이용해서 변환을 커스텀 할 수도 있다.
public class StringToEnumConverter<T extends Enum<?>> implements Converter<String, T> {

	private final Class<T> type;

	public StringToEnumConverter(Class<T> type) {
		this.type = type;
	}

	@Override
	public T convert(String source) {
		return T.valueOf(type, source);
	}
}

참고 자료