对于最新的稳定版本,请使用 Spring Framework 7.0.6!spring-doc.cadn.net.cn

类型转换

某些注解控制器方法参数表示基于String的请求输入(例如@RequestParam@RequestHeader@PathVariable@MatrixVariable@CookieValue),如果声明的参数类型不是String,可能需要类型转换。spring-doc.cadn.net.cn

对于此类情况,将根据配置的转换器自动应用类型转换。 默认情况下,支持简单类型(intlongDate等)。您可以通过 WebDataBinder(参见 DataBinder) 或通过向 FormattingConversionService 注册 Formatters 来自定义类型转换。 请参见 Spring 字段格式化spring-doc.cadn.net.cn

类型转换中的一个实际问题是空字符串源值的处理。 如果类型转换后变为null,则该值被视为缺失。 对于LongUUID和其他目标类型可能会出现这种情况。如果希望允许null 注入,请在参数注解上使用required标志,或把参数声明为@Nullablespring-doc.cadn.net.cn

从 5.3 版本开始,即使在类型转换后,非空参数也将被强制执行。如果您希望处理方法也接受 null 值,请将您的参数声明为 @Nullable, 或在相应的 @RequestParam 注解中将其标记为 required=false 等。这是最佳实践,并且是解决升级到 5.3 版本时遇到的回归问题的推荐方案。spring-doc.cadn.net.cn

或者,您可以特别处理例如在需要 @PathVariable 的情况下产生的 MissingPathVariableException。转换后的 null 值将被视为原始值为空,因此会抛出相应的 Missing…​Exception 异常。spring-doc.cadn.net.cn