반응형
스프링 타입 컨버터
org.springframework.core.convert.converter.Converter 인터페이스의 convert메서드를 활용해서 타입을 변환할 수 있다.
@Slf4j
public class StringToIntegerConverter implements Converter<String, Integer> {
@Override
public Integer convert(String source) {
log.info("convert source={}", source);
return Integer.valueOf(source);
}
}
@Slf4j
public class IntegerToStringConverter implements Converter<Integer, String> {
@Override
public String convert(Integer source) {
log.info("convert source={}", source);
return String.valueOf(source);
}
}
이렇게 직접 생성한 컨버터들을 WebMvcConfigurer 인터페이스의 addFormatters 메서드를 사용해서 스프링 내부의 ConversionService에 등록할 수 있다.
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addConverter(new StringToIntegerConverter());
registry.addConverter(new IntegerToStringConverter());
registry.addConverter(new StringToIpPortConverter());
registry.addConverter(new IpPortToStringConverter());
}
}


스프링 포매터
Converter는 범용 타입 변환 기능을 제공했다면, Formatter는 문자에 특화되어 있다.
Converter : 객체 -> 객체
Formatter : 객체 -> 문자 , 문자 -> 객체
"1,000" -> 1000 or 1000 -> "1,000"로 변환해주는 포매터
@Slf4j
public class MyNumberFormatter implements Formatter<Number> {
@Override
public Number parse(String text, Locale locale) throws ParseException {
log.info("text={}, local=e{}", text, locale);
NumberFormat format = NumberFormat.getInstance(locale);
return format.parse(text);
}
@Override
public String print(Number object, Locale locale) {
log.info("object={}, local=e{}", object, locale);
return NumberFormat.getInstance(locale).format(object);
}
}
FormattingConversionService를 사용해서 포매터도 컨버전 서비스에 등록할 수 있다.
출처
[인프런] 스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2/dashboard
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 인프런 | 강의
웹 애플리케이션 개발에 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. MVC 2편에서는 MVC 1편의 핵심 원리와 구조 위에 실무 웹 개발에 필요한 모든 활용 기술들을 학습할 수 있
www.inflearn.com
반응형
'WEB > Spring 인강' 카테고리의 다른 글
[Spring] 스프링 공부 #31 (0) | 2022.04.20 |
---|---|
[Spring] 스프링 공부 #30 (0) | 2022.04.20 |
[Spring] 스프링 공부 #29 (0) | 2022.04.17 |
[Spring] 스프링 공부 #28 (0) | 2022.04.15 |
[Spring] 스프링 공부 #27 (0) | 2022.04.14 |