오봉이와 함께하는 개발 블로그

스프링 MVC 2 - 포맷터를 웹 애플리케이션에 적용 본문

BE/Spring

스프링 MVC 2 - 포맷터를 웹 애플리케이션에 적용

오봉봉이 2022. 9. 1. 00:21
728x90

포맷터 적용하기

포맷터를 웹 애플리케이션에 적용해보자.

WebConfig - 수정

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addFormatters(FormatterRegistry registry) {
        // 주석처리 우선순위
        // registry.addConverter(new StringToIntegerConverter());
        // registry.addConverter(new IntegerToStringConverter());
        registry.addConverter(new IntegerToStringConverter());
        registry.addConverter(new IpPortToStringConverter());
        // 추가
        registry.addFormatter(new MyNumberFormatter());
    }
}

StringToIntegerConverter, IntegerToStringConverter를 꼭 주석처리 하자.
MyNumberFormatter도 숫자 -> 문자(IntegerToStringConverter와 겹침), 문자 -> 숫자(StringToIntegerConverter와 겹침)로 변경하기 때문에 둘의 기능이 겹친다.
우선순위는 컨버터가 우선하므로 포맷터가 적용되지 않고, 컨버터가 적용된다.

실행 - 객체 -> 문자

• ${number}: 10000
• ${{number}}: 10,000

컨버전 서비스를 적용한 결과 MyNumberFormatter가 적용되어서 10,000문자가 출력된 것을 확인할 수 있다.

실행 - 문자 -> 객체

실행 로그

MyNumberFormatter : text=10,000, locale=ko_KR
data = 10000

"10,000"이라는 포맷팅 된 문자가 Integer타입의 숫자 10000으로 정상 변환 된 것을 확인할 수 있다.

실행2 - 문자 -> 객체 (실패)

실행 로그

Resolved [org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed
to convert value of type 'java.lang.String' to required type 'java.lang.Integer'; nested
exception is java.lang.NumberFormatException: For input string: "10,000"]

실행3 - 문자 -> 객체 (실패)

  • 실행 : http://localhost:8080/hello-v2?data=10,000
    • data=10,000
    • WebConfig에서 registry.addFormatter(new MyNumberFormatter()); 주석처리
    • WebConfig에서 registry.addConverter(new StringToIntegerConverter()); 주석 해제

실행 로그

convert source = 10,000

Resolved [org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed
to convert value of type 'java.lang.String' to required type 'java.lang.Integer'; nested
exception is java.lang.NumberFormatException: For input string: "10,000"]
출처 : 인프런 김영한 지식공유자님 강의 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
728x90
Comments