장성호's
장성호's blog
장성호's
  • 분류 전체보기
    • 알고리즘
      • 백준
      • 이론
    • WEB
      • Spring 인강
      • 네트워크
    • 개인 프로젝트
      • 쇼핑몰 만들기

블로그 메뉴

  • 홈
  • 깃허브
전체 방문자
오늘
어제
반응형
hELLO · Designed By 정상우.
장성호's

장성호's blog

[Spring] 스프링 공부 #32
WEB/Spring 인강

[Spring] 스프링 공부 #32

2022. 4. 21. 03:17
반응형

 

 

스프링 타입 컨버터

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
    'WEB/Spring 인강' 카테고리의 다른 글
    • [Spring] 스프링 공부 #31
    • [Spring] 스프링 공부 #30
    • [Spring] 스프링 공부 #29
    • [Spring] 스프링 공부 #28
    장성호's
    장성호's
    장성호's 개발 공부 블로그

    티스토리툴바