ConversionService
Spring은 Converter를 모아서 편리하게 관리하고 사용할 수 있게 해주는 기능을 제공한다.
이것이 ConversionService이다.
ConversionService 인터페이스
canConvert( ) 메서드로 Convert 가능 여부를 확인한다.
convert( ) 메서드로 실제 변환을 수행한다.
DefaultConversionService
Spring의 표준 ConversionService로 기본 제공 Converter와 확장 가능성을 통해 다양한 타입 변환을 유연하게 처리할 수 있도록 지원한다.
ConversionService를 구현한 구현체이다.
ConverterRegistry에 다양한 Converter를 등록한다.
ConverterRegistry는 Converter를 등록하고 관리하는 기능을 제공한다.
코드 예시
import static org.assertj.core.api.Assertions.*;
public class ConversionServiceTest {
@Test
void defaultConversionService() {
// given
DefaultConversionService dcs = new DefaultConversionService();
dcs.addConverter(new StringToPersonConverter());
Person wonuk = new Person("wonuk", 100);
// when
Person stringToPerson = dcs.convert("wonuk:1200", Person.class);
// then
assertThat(stringToPerson.getName()).isEqualTo(wonuk.getName());
assertThat(stringToPerson.getAge()).isEqualTo(wonuk.getAge());
}
}
- 컨버터를 사용할 때는 종류를 몰라도 된다.
- 컨버터는 ConversionService 내부에서 숨겨진채 제공된다.
- 반환 타입, 파라미터 타입, 제네릭 등으로 ConversionService가 컨버터를 찾는다.
- 즉, 클라이언트는 ConversionService 인터페이스만 의존하면 된다.
- 컨버터 등록과 사용의 분리
'스프링 프레임워크' 카테고리의 다른 글
Spring Formatter (1) | 2024.11.27 |
---|---|
TypeConverter (0) | 2024.11.27 |
WebMvcConfigure (0) | 2024.11.27 |
ArgumentResolver (1) | 2024.11.27 |
HttpMessageConverter (0) | 2024.11.27 |