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