3.4.2 ConverterFactory 사용하기
String
을 Enum
객체로 변환할 때와 같이 전체 클래스 계층에 대한 변환 로직을 한 곳에모으려고 한다면 다음 예제와 같이 ConverterFactory
를 구현할 수 있습니다.
package org.springframework.core.convert.converter;
public interface ConverterFactory<S, R> {
<T extends R> Converter<S, T> getConverter(Class<T> targetType);
}
S를 변환하기 전의 타입으로, R을 변환할 클래스의 범위를 정의하는 기본 타입으로 지정하십시오. 그런 다음, getConverter(Class<T>)
를 구현하십시오. 여기서 T는 R의 하위 클래스 입니다.
StringToEnumConverterFactory
를 예로 들어 보겠습니다.
package org.springframework.core.convert.support;
final class StringToEnumConverterFactory implements ConverterFactory<String, Enum> {
public <T extends Enum> Converter<String, T> getConverter(Class<T> targetType) {
return new StringToEnumConverter(targetType);
}
private final class StringToEnumConverter<T extends Enum> implements Converter<String, T> {
private Class<T> enumType;
public StringToEnumConverter(Class<T> enumType) {
this.enumType = enumType;
}
public T convert(String source) {
return (T) Enum.valueOf(this.enumType, source.trim());
}
}
}
Last updated
Was this helpful?