Spring Boot 3.x中@RequestParam(required=false)在Swagger UI显示异常
问题原因分析
注解版本兼容性冲突:你使用的
swagger-annotations: 1.6.10属于Swagger 2体系的旧版注解,而适配Spring Boot 3.x的springdoc-openapi-starter-webmvc-ui: 2.0.4是基于OpenAPI 3规范开发的,两者的注解解析逻辑不匹配。springdoc-openapi 2.x对旧版Swagger注解的支持有限,无法正确识别@RequestParam(required = false)中的必填配置,导致Swagger UI误将参数标记为必填项。Spring Boot 3.x校验机制升级影响:Spring Boot 3.x全面切换到Jakarta Validation API(替代原Java EE Validation),springdoc-openapi 2.x会优先结合Jakarta的校验注解(如
@NotNull)判断参数必填性。旧版swagger-annotations的配置未被纳入新的校验逻辑链,即便你设置了required=false,也不会被springdoc正确解析。参数类型推断逻辑偏差:对于
Double这类引用类型,springdoc-openapi在未明确收到必填性配置时,会结合参数是否允许为null的逻辑推断,但由于旧版注解解析失效,导致推断逻辑出现偏差,误将非必填参数标记为必填。
内容的提问来源于stack exchange,提问作者Yonoss
相关产品推荐
相关产品推荐

