springdoc-openapi UI 1.7.0中响应属性myMessages重复显示问题
问题原因及解决办法
为什么myMessages会显示两次?
springdoc-openapi 1.7.0版本存在解析bug:当字段同时使用@JsonProperty(required = true)、@NotNull和@Schema注解时,框架会重复识别该字段的元数据,导致Swagger UI中同一字段显示两次。
具体来说,@JsonProperty是Jackson的序列化注解,@NotNull是JSR-380的验证注解,@Schema是OpenAPI的文档注解,1.7.0版本的springdoc在处理这几个注解的组合时,会生成两份字段的文档定义。
解决办法
- 移除重复的必填标记注解:保留
@Schema(requiredMode = RequiredMode.REQUIRED)和@NotNull即可,前者负责Swagger文档标记必填,后者负责后端参数校验,不需要@JsonProperty(required = true)重复标记。修改后的代码如下:
@AllArgsConstructor @Data @NoArgsConstructor @Schema(description = "包含字符串列表") public class MyResponse { @Schema(requiredMode = RequiredMode.REQUIRED, description = "我的示例字符串列表") @NotNull private List<String> myMessages; }
- 升级springdoc-openapi版本:这个重复显示的bug在1.8.0及以上版本中已经被修复,直接升级依赖版本即可解决问题。
内容的提问来源于stack exchange,提问作者P H
相关产品推荐
相关产品推荐

