Spring Boot启动时提示Unable to find a model that matches key问题求助
Spring Boot集成Swagger/OpenAPI后找不到ErrorJson模型的解决建议
问题背景
添加OpenAPI后出现模型找不到的错误,此前运行正常,推测与OpenAPI集成相关。
报错日志
[ERROR] Unable to find a model that matches key ModelKey{qualifiedModelName=ModelName{namespace='com.myproject.repository.model', name='ErrorJson'}, viewDiscriminator=null, validationGroupDiscriminators=[], isResponse=true}
当前Swagger配置
@Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .host(hostname) .select() .apis(RequestHandlerSelectors.basePackage("com.myproject.repository")) .paths(PathSelectors.any()) .build() .securitySchemes(Collections.singletonList(apiKey())) .securityContexts(Collections.singletonList(securityContext())); }
排查与解决步骤
- 确认
com.myproject.repository.model.ErrorJson类的访问权限:必须是public修饰,且提供无参构造函数,同时字段要有对应的getter方法(Swagger需要通过反射解析模型结构)。 - 检查扫描范围:当前配置仅扫描
com.myproject.repository下的请求处理器,但OpenAPI的模型扫描可能需要明确覆盖model子包,或者确认Spring的组件扫描是否包含该包路径。 - 显式声明模型:如果
ErrorJson是异常响应返回的模型,可在Swagger配置中通过.additionalModels(typeResolver.resolve(ErrorJson.class))手动添加该模型,确保被Swagger识别。 - 检查依赖兼容性:避免同时引入springfox-swagger和springdoc-openapi,两者可能存在冲突;确认所用Swagger/OpenAPI依赖版本与Spring Boot版本匹配。
内容的提问来源于stack exchange,提问作者Alexander Mladzhov
相关产品推荐
相关产品推荐

