오봉이와 함께하는 개발 블로그
스프링 MVC 2 - 포맷터를 웹 애플리케이션에 적용 본문
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
문자가 출력된 것을 확인할 수 있다.
실행 - 문자 -> 객체
- 실행 : http://localhost:8080/hello-v2?data=10,000
- data=10,000
실행 로그
MyNumberFormatter : text=10,000, locale=ko_KR
data = 10000
"10,000"
이라는 포맷팅 된 문자가 Integer
타입의 숫자 10000
으로 정상 변환 된 것을 확인할 수 있다.
실행2 - 문자 -> 객체 (실패)
- 실행 : http://localhost:8080/hello-v2?data=10,000
- data=10,000
- WebConfig에서 registry.addFormatter(new MyNumberFormatter()); 주석처리
실행 로그
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
'BE > Spring' 카테고리의 다른 글
스프링 MVC 2 - 파일 업로드 소개 (0) | 2022.09.01 |
---|---|
스프링 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 |
Comments