문자열 기반 요청 입력(예: @RequestParam
, @RequestHeader
, @PathVariable
, @MatrixVariable
및 @CookieValue
)을 나타내는 일부 annotation이 달린 컨트롤러 메서드 인수가 String
이 아닌 다른 것으로 선언된 경우 형식 변환이 필요할 수 있습니다.
이러한 경우 구성된 변환기에 따라 유형 변환이 자동으로 적용됩니다. 기본적으로 단순 type(int
, long
, Date
등)이 지원됩니다. WebDataBinder
(DataBinder
참조)를 통해 또는 FormattingConversionService
에 포맷터를 등록하여 유형 변환을 사용자 정의할 수 있습니다. 스프링 필드 형식을 참조하세요.
유형 변환의 실제 문제는 빈 문자열 소스 값을 처리하는 것입니다. 이러한 값은 유형 변환의 결과로 null
이 되는 경우 누락된 것으로 처리됩니다. 이는 Long
, UUID
및 기타 대상 유형의 경우일 수 있습니다. null
삽입을 허용하려면 인수 annotation에 required
플래그를 사용하거나 인수를 @Nullable
로 선언하세요.
[Note]
5.3부터 유형 변환 후에도 null이 아닌 인수가 적용됩니다. 처리기 메서드가 null 값도 허용하려는 경우 인수를@Nullable
로 선언하거나 해당@RequestParam
등 annotation에서 이를require=false
로 표시합니다. 이는 5.3 업그레이드에서 발생하는 회귀에 대한 모범 사례이자 권장되는 솔루션입니다.또는 구체적으로 처리할 수도 있습니다. 필수
@PathVariable
의 경우 결과MissingPathVariableException
. 변환 후 null 값은 빈 원래 값처럼 처리되므로 해당Missing…Exception
변형이 발생합니다.