类型转换
一些带有注解的控制器方法参数表示基于字符串的请求输入(例如,@RequestParam、@RequestHeader、@PathVariable、@MatrixVariable 和 @CookieValue),如果这些参数的声明类型不是 String,则可能需要进行类型转换。
对于此类情况,类型转换会根据配置的转换器自动进行。默认情况下,系统支持简单类型(如int、long、Date等)。可以通过WebDataBinder(参见DataBinder)来自定义类型转换,或者通过将Formatters注册到FormattingConversionService中来实现类型转换(参见Spring Field Formatting)。
在类型转换中,一个实际存在的问题是空字符串(empty String)源值的处理。如果由于类型转换的结果,这样的值变成了null,那么它将被视为缺失(missing)。对于Long、UUID以及其他目标类型来说,可能会出现这种情况。如果你允许null被注入(即允许参数为null),要么在参数注解上使用required标志,要么将参数声明为@Nullable。