원래 컨버전 서비스에는 컨버터만 등록할 수 있고 포맷터를 등록할 수는 없다.
하지만, 그 컨버전서비스 인터페이스를 상속받은 클래스 중에는 포맷터를 지원하는 컨버전 서비스가 있다. 거기에 등록하면 된다.
DefaultFormattingConversionService는 컨버전서비스에 포맷팅을 등록할 수 있고, 거기에 기본적인 기능과 정보가 추가되어 있다.
public class FormattingConversionServiceTest {
@Test
public void formattingConversionService(){
DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService();
conversionService.addConverter(new StringIpPortConverter());
conversionService.addConverter(new IpPortToStringConverter());
conversionService.addConverter(new IntegerToStringConverter());
conversionService.addConverter(new StringToIntegerConverter());
conversionService.addFormatter(new MyNumberFormatter());
IpPort ipPort = conversionService.convert("127.0.0.0:8080", IpPort.class);
assertThat(ipPort).isEqualTo(new IpPort("127.0.0.0", 8080));
String numStr = "1,000";
Long num = conversionService.convert(numStr, Long.class);
assertThat(num).isEqualTo(1000);
Long numInt = 1000L;
String numToString = conversionService.convert(numInt, String.class);
assertThat(numToString).isEqualTo("1,000");
}
}
DefaultFormattingConversionService를 생성하고,(이건 컨버터를 관리하던 ConversionService와 포맷터를 관리하는 FormatterRegistry 둘 다 상속 받은 거다.) addConverter와 addFormatter해서 포맷터와 컨버터를 등록시켜준다.
근데 사용하는 것은 둘다 ConversionService.convert() 해서 똑같다.
근데 Number 포맷팅과 관련해서는 Long타입인게 좀 불편하긴 하다.
'스프링 > 4. 스프링 MVC-2' 카테고리의 다른 글
83. 스프링이 제공하는 기본 포맷터 (0) | 2023.09.24 |
---|---|
82. 포맷터 웹 어플리케이션(스프링, 컨버전서비스)에 등록 (0) | 2023.09.24 |
80. 포맷터 (0) | 2023.09.24 |
79. 컨버터를 뷰 템플릿에 적용 (0) | 2023.09.23 |
78. 컨버전서비스 실제 사용 (0) | 2023.09.23 |