3.4.6 프로그래밍 방식으로 ConversionService 사용하기

프로그래밍 방식으로 ConversionService인스턴스로 작업하려면, 다른 빈과 마찬가지로 참조를 주입할 수 있습니다. 다음 예제에서는 이를 수행하는 방법을 보여줍니다.

@Service
public class MyService {

    @Autowired
    public MyService(ConversionService conversionService) {
        this.conversionService = conversionService;
    }

    public void doIt() {
        this.conversionService.convert(...)
    }
}

부분의 경우에 targetType을 지정하는 convert메소드를 사용할 수는 있지만, 매개 변수가 있는 요소의 컬렉션과 같이 더 복잡한 타입들에서는 작동하지 않습니다. 예를 들어, IntegerListStringList로 변환하려면 원본 및 대상 타입에 대한 공식 정의를 제공해야 합니다.

다행스럽게도, TypeDescriptor는 다음 에제와 같이 다양한 옵션을 사용하여 간단하게 수행할 수 있습니다.

DefaultConversionService cs = new DefaultConversionService();

List<Integer> input = ....
cs.convert(input,
    TypeDescriptor.forObject(input), // List<Integer> type descriptor
    TypeDescriptor.collection(List.class, TypeDescriptor.valueOf(String.class)));

DefaultConversionService는 대부분의 환경에 적합한 컨버터를 자동으로 등록합니다. 여기에는 컬렉션 변환기, 스칼라 변환기 및 기본 Object-to-StringConverter가 포함됩니다. DefaultConversionService클래스의 정적 addDefaultConverters메서드를 사용하여 ConverterRegistry에 동일한 변환기를 등록할 수 있습니다.

값 타입에 대한 컨버터는 배열 및 컬렉션에 다시 사용되므로, 표준 컬렉션 처리가 적절하다고 가정할 때 특정 컨버터를 만들어 SCollection 을 TCollection으로변환할 필요가 있습니다.

Last updated