본문 바로가기
Spring/spring mvc 심화

타입 컨버터

by 킹차니 2021. 7. 17.

스프링 타입 컨버터 소개

문자를 숫자로 변환하거나, 반대로 숫자를 문자로 변환해야 하는 것 처럼 애플리케이션을 개발하다 보면 타입을 변환해야 하는 경우가 상당히 많습니다.

 

아래의 컨트롤러를 보면 쿼리스트링 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