| 스프링 타입 컨버터란?
Http쿼리 스트링으로 전해지는 모든 것은 문자로 인식된다.
하지만 localhost:8080/test?itemId=10 처럼 쿼리스트링을 보냈을때, 컨트롤러에서는 Long itemId의 숫자 타입으로 입력받을 수 있다.
이처럼 형변환이 되려면 매개변수를 처리하는 과정에서 자동으로 호출되는 변환 기능이 있어야 한다.
이것이 스프링 타입 컨버터이다.
스프링 타입 컨버터의 아래의 어노테이션을 대상으로 사용 가능하다.
- @RequestParam
- @ModelAttribute
- @PathVariable
대표적으로 스프링은 이 세 개의 어노테이션을 컨버터를 진행하게 된다.
예를들어 하나 알아보자.

나는 converter-test란 경로에 문자 10을 집어 넣을 예정이다.
instance of를 통해 10이라는 것이 숫자면 숫자라고 표시하고
숫자가 아니라면 숫자가 아니라고 표시 할 것 이다.
위에서 말했듯이 기본적으로 Http으로 전해지는 것은 "무조건" 문자 타입으로 입력되게 되고
마찬가지로 컨트롤러에 들어올 때도 문자로 인식되게 된다.
하지만 스프링의 자동변환으로 문자가 숫자로 자동으로 변환되는 것 인데.. 한번 확인해보자

나는 url 경로에 10을 넣었다. 그렇다면 문자 "10"으로 인식되어 들어올 것 이다.

하지만 instance of로 확인해본 결과 이 "10"은 문자타입이 아니라 정수 타입이라고 한다.

그 이유는 @RequestParam 옆에 붙은 타입이 정수타입이기 때문에 스프링이 자동으로 타입을 변환 해준다.
boolean 타입으로도 되고 모든 타입으로 적용 시켜주는데
이렇게 변환 가능한 어노테이션은
- @RequestParam
- @ModelAttribute
- @PathVariable
스프링에서 이 세 개 뿐임으로 유의해서 사용하도록 하자.
| 컨버터 들을 관리해주는 ConversionService
이렇듯 스프링에서 많은 컨버터들을 관리해주는 곳은 ConversionService에서 관리한다.

이렇듯 많은 컨버터 들을 모아놓은 곳이다. 이 컨버젼서비스 덕분에 우리는 일일이 변환하지 않아도
스프링이 자동으로 타입을 컨버전 시켜주는 것 이다.
| 객체타입은?
그럼 @ModelAtrribute로 객체 타입을 받게되면 어떻게 될까?
당연 우리가 커스텀해서 만든 객체 타입은 변환 할 수 없다.
스프링이 어떻게 우리가 만든 객체들을 일일이 확인해서 변환 해 줄 것인가.
'[자바]스프링' 카테고리의 다른 글
| [자바 스프링] 스프링 - 자동 의존성이란(DI)과 @Bean 개념 및 이해 (3) | 2024.01.08 |
|---|---|
| [Oauth 구현시 액세스 차단됨이 나올 때 관련 문제 해결하기] (0) | 2023.11.23 |
| [스프링] 인터셉터[Interceptor]의 원리와 개념 그리고 활용 (0) | 2023.06.01 |
| [스프링] Spring에서 세션이란? 세션의 이해와 원리 그리고 로그인 (0) | 2023.05.31 |
| [스프링] 쿠키란? 쿠키의 원리부터 구현까지 (0) | 2023.05.31 |