오봉이와 함께하는 개발 블로그
스프링 MVC 2 - 포맷터를 지원하는 컨버전 서비스 본문
728x90
포맷터를 지원하는 컨버전 서비스
컨버전 서비스에는 컨버터만 등록할 수 있고, 포맷터를 등록할 수 없다.
하지만 포맷터는 객체 -> 문자, 문자 -> 객체로 변환하는 특별한 컨버터일 뿐이다.
포맷터를 지원하는 컨버전 서비스를 사용하면 컨버전 서비스에 포맷터를 추가할 수 있다.
내부에서 어댑터 패턴을 사용해서 Formatter
가 Converter
처럼 동작하도록 지원한다.
FormattingConversionService
는 포맷터를 지원하는 컨버전 서비스다.DefaultFormattingConversionService
는 FormattingConversionService
에 기본적인 통화, 숫자 관련 몇가지 기본 포맷터를 추가해서 제공한다.
테스트 코드
public class FormattingConversionServiceTest {
@Test
void formattingConversionService() {
DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService();
//컨버터 등록
conversionService.addConverter(new StringToIpPortConverter());
conversionService.addConverter(new IpPortToStringConverter());
//포맷터 등록
conversionService.addFormatter(new MyNumberFormatter());
// 컨버터 사용
IpPort ipPort = conversionService.convert("127.0.0.1:8080", IpPort.class);
assertThat(ipPort).isEqualTo(new IpPort("127.0.0.1", 8080)); //포맷터 사용
assertThat(conversionService.convert(1000, String.class)).isEqualTo("1,000");
assertThat(conversionService.convert("1,000", Long.class)).isEqualTo(1000L);
}
}
DefaultFormattingConversionService 상속 관계
FormattingConversionService
는 ConversionService
관련 기능을 상속받기 때문에 결과적으로 컨버터도 포맷터도 모두 등록할 수 있다. 그리고 사용할 때는 ConversionService
가 제공하는 convert
를 사용하면 된다.
한마디로 DefaultFormattingConversionService
는 컨버터 기능도 되고, 포맷터 기능도 첨가된 클래스다.
추가로 스프링 부트는 DefaultFormattingConversionService
를 상속 받은 WebConversionService
를 내부에서 사용한다.
출처 : 인프런 김영한 지식공유자님 강의 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
728x90
'BE > Spring' 카테고리의 다른 글
스프링 MVC 2 - 스프링이 제공하는 기본 포맷터 (0) | 2022.09.01 |
---|---|
스프링 MVC 2 - 포맷터를 웹 애플리케이션에 적용 (0) | 2022.09.01 |
스프링 MVC 2 - 포맷터 : Formatter (0) | 2022.08.31 |
스프링 MVC 2 - 뷰 템플릿에 컨버터 적용 (0) | 2022.08.31 |
스프링 MVC 2 - 스프링에 Converter 적용 (0) | 2022.08.31 |
Comments