Type Conversion

Dev.Hammy·2024년 4월 3일
0

반응형 스택에서 이에 상응하는 내용 보기

문자열 기반 요청 입력(예: @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 변형이 발생합니다.

0개의 댓글