스프링 타입 컨버터 소개
문자를 숫자로 변환하거나, 반대로 숫자를 문자로 변환해야 하는 것 처럼 애플리케이션을 개발하다 보면 타입을 변환해야 하는 경우가 상당히 많습니다.
아래의 컨트롤러를 보면 쿼리스트링 data를 숫자로 변경해줍니다.
@RequestParam같이 문자를 편하게 숫자로 변경하는 것은
스프링이 중간에서 타입을 변경해줬기 때문입니다. 이러한 예는 @ModelAttribute, @PathVariable에서도 마찬가지입니다.
이렇게 타입을 변환하는 기능을 개발자가 직접 만들 수 있습니다.
아래의 컨버터 인터페이스를 implements하면 됩니다.
우선 문자->숫자 , 숫자->문자로 변경해주는 컨버터를 만들어보겠습니다.
Integer -> String
String -> Integer
아래와 같이 테스트할 수 있습니다.
이번에는 조금 더 실용적인 IpPort라는 클래스를 만들고, ip와 port정보가 "127.0.0.1:8080"와 같이 오면 ipPort클래스로,
ipPort 객체가 오면 "127.0.0.1:8080"와 같은 문자열로 바꿔주는 컨버터를 만들어 보겠습니다.
IpPort
String -> IpPort
IpPort -> String
테스트는 아래와 같습니다.
그런데 이렇게 타입 컨버터를 하나하나 직접 사용하면, 개발자가 컨트롤러에서 직접 컨버팅 하는 것과 큰 차이가 없습니다.
타입 컨버터를 등록하고 관리하면서 편리하게 변환 기능을 제공하는 역할을 하는 무언가가 필요합니다.
참고
스프링은 용도에 따라 다양한 방식의 타입 컨버터를 제공합니다.
Converter -> 기본 타입 컨버터
ConverterFactory -> 전체 클래스 계층 구조가 필요할 때
GenericConverter -> 정교한 구현, 대상 필드의 애노테이션 정보 사용 가능
ConditionalGenericConverter -> 특정 조건이 참인 경우에만 실행
공식 문서: https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#core- convert
스프링은 문자, 숫자, 불린, Enum등 일반적인 타입에 대한 대부분의 컨버터를 기본으로 제공합니다.
IDE에서 Converter , ConverterFactory , GenericConverter 의 구현체를 찾아보면 수 많은 컨버터를 확인할 수 있습니다.
'Spring > spring mvc 심화' 카테고리의 다른 글
뷰 템플릿에 컨버터 적용하기 (0) | 2021.07.18 |
---|---|
컨버젼 서비스 (0) | 2021.07.18 |
12 Bean Validator3 - 등록용, 수정용 Item분리 (0) | 2021.07.08 |
11 Bean Validator3 - groups (0) | 2021.07.08 |
9 Bean Validator1 (0) | 2021.07.08 |