3.4.1 Converter SPI

타입 변환 논리를 구현하는 SPI는 다음 인터페이스 정의에 표시된 것처럼 간단하고 강력한 타입입니다:

package org.springframework.core.convert.converter;

public interface Converter<S, T> {

    T convert(S source);
}

자신의 Converter를 만들려면 위의 Converter인터페이스를 구현하면 됩니다. 매개 변수 S는 변환되기 전의 타입이고 T는 변환할 타입입니다. 위탁 배열이나 컬렉션 변환기가 등록되어 있는 경우에는(기본적으로 DefaultConversionService가 처리함), S컬렉션이나 배열을 T배열 또는 컬렉션으로 변환해야 하는 경우 이러한 변환기를 투명하게 적용할 수도 있습니다.

convert(S)를 호출할 때 source 인수는 null이 아니라는 것을 보장해야 합니다. 변환이 실패하면 Converter는 검사되지 않은 Exception을 발생시킬 수 있습니다. 특히, IllegalArgumentException을 던져 유효하지 않은 source 값을 보고해야 합니다. Converter구현이 스레드로부터 안전한 지 확인하십시오.

편리한 여러 개의 Converter 구현체가 core.convert.support 패키지에서 제공됩니다. 여기에는 문자열을 숫자나 다른 일반적인 타입으로 변환하는 Converter가 포함되어 있습니다. 다음은 일반적인 Converter구현의 예제로 StringToInteger클래스를 보여줍니다.

package org.springframework.core.convert.support;

final class StringToInteger implements Converter<String, Integer> {

    public Integer convert(String source) {
        return Integer.valueOf(source);
    }
}

Converter 인터페이스에서 구현해야 할 메소드는 convert() 메소드 하나이다. 즉 PropertyEditor와는 달리 단방향 타입 변환만 제공한다. 'S'에는 변환 전인 Source 타입을 명시하고, 'T'에는 변환 할 Target 타입을 명시한다. Converter 객체가 변환과 관련된 상태 값을 저장하지 않기 때문에 Converter를 Singlton Bean으로 등록하여 Multi-thread 환경에서도 안전하게 사용할 수 있다.

Last updated