类型转换
某些表示基于字符串的请求输入的带注解的控制器方法参数(例如,@RequestParam
、@RequestHeader
、@PathVariable
、@MatrixVariable
和 @CookieValue
)如果参数声明为除String
之外的其他类型,则可能需要类型转换。
对于此类情况,将根据配置的转换器自动应用类型转换。默认情况下,支持简单类型(如int
、long
、Date
等)。可以通过WebDataBinder
(参见 DataBinder
)或通过在FormattingConversionService
中注册Formatter
来自定义类型转换(参见 Spring 字段格式化)。
类型转换中的一个实际问题是空字符串源值的处理。如果由于类型转换导致该值变为null
,则该值将被视为缺失。对于Long
、UUID
和其他目标类型,可能出现这种情况。如果您希望允许注入null
,则可以使用参数注解上的required
标志,或者将参数声明为@Nullable
。