SpringDoc Swagger UI无法预览Request及Response Bean模型问题求助
解决方案
- 配置Jackson忽略Setter冲突
该错误根源是SpringDoc序列化Schema时,Jackson检测到第三方依赖的Bean存在同名称不同参数的Setter方法导致序列化异常,添加如下配置类即可解决:
import com.fasterxml.jackson.databind.ObjectMapper; import io.swagger.v3.core.jackson.ModelResolver; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class SpringDocJacksonConfig { @Bean public ModelResolver modelResolver(ObjectMapper objectMapper) { // 关闭Getter当作Setter使用的规则,解决同名称Setter冲突 objectMapper.configure(com.fasterxml.jackson.databind.MapperFeature.USE_GETTERS_AS_SETTERS, false); // 忽略未知属性、空Bean序列化报错 objectMapper.configure(com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); objectMapper.configure(com.fasterxml.jackson.databind.SerializationFeature.FAIL_ON_EMPTY_BEANS, false); return new ModelResolver(objectMapper); } }
- 排除冲突类扫描
从报错日志中获取到冲突类的全限定名后,在配置文件中添加SpringDoc忽略扫描规则,以yaml配置为例:
springdoc: ignored-parameter-types: - 冲突类全限定名(例如org.springframework.data.domain.Pageable、javax.servlet.http.HttpServletResponse等)
- 版本适配调整
Spring Boot 2.5.5对应适配的SpringDoc稳定版本为1.6.x系列,当前使用的1.5.11版本存在兼容性问题,调整依赖版本:
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-ui</artifactId> <version>1.6.14</version> </dependency>
- 排除Swagger1.x依赖冲突
检查项目所有依赖,排除掉swagger-core、swagger-annotations的1.x版本,避免和SpringDoc内置的Swagger2.x版本产生冲突。
内容的提问来源于stack exchange,提问作者Hitesh Kirtane
相关产品推荐
相关产品推荐

