Spring项目集成Swagger失败:apiDocumentationScanner Bean创建异常
无法集成Swagger的问题排查与解决
已尝试Swagger 3.0.0版本,仍无法完成项目集成,上下文初始化时抛出依赖不满足异常,报错日志翻译如下:
2023-07-27T21:03:45.819+03:00 WARN 9932 --- [ main] ConfigServletWebServerApplicationContext : 上下文初始化期间遇到异常 - 取消刷新尝试:org.springframework.beans.factory.UnsatisfiedDependencyException: 创建在URL [jar:file:/C:/Users/90539/.m2/repository/io/springfox/springfox-spring-web/2.9.2/springfox-spring-web-2.9.2.jar!/springfox/documentation/spring/web/scanners/ApiDocumentationScanner.class] 中定义的名称为'apidocumentationScanner'的Bean时出错:通过构造函数参数1表达的不满足依赖项:创建在URL [jar:file:/C:/Users/90539/.m2/repository/io/springfox/springfox-spring-web/2.9.2/springfox-spring-web-2.9.2.jar!/springfox/documentation/spring/web/scanners/ApiListingScanner.class] 中定义的名称为'apilistingScanner'的Bean时出错:通过构造函数参数0表达的不满足依赖项:创建在URL [jar:file:/C:/Users/90539/.m2/repository/io/springfox/springfox-spring-web/2.9.2/springfox-spring-web-2.9.2.jar!/springfox/documentation/spring/web/scanners/ApiDescriptionReader.class] 中定义的名称为'apidescriptionReader'的Bean时出错:通过构造函数参数0表达的不满足依赖项:创建在URL [jar:file:/C:/Users/90539/.m2/repository/io/springfox/springfox-spring-web/2.9.2/springfox-spring-web-2.9.2.jar!/springfox/documentation/spring/web/scanners/CachingOperationReader.class] 中定义的名称为'cachingOperationReader'的Bean时出错:通过构造函数参数0表达的不满足依赖项:创建在URL [jar:file:/C:/Users/90539/.m2/repository/io/springfox/springfox-spring-web/2.9.2/springfox-spring-web-2.9.2.jar!/springfox/documentation/spring/web/readers/operation/ApiOperationReader.class] 中定义的名称为'apioerationReader'的Bean时出错:通过构造函数参数0表达的不满足依赖项:创建名称为'documentationPluginsManager'的Bean时出错:通过字段'documentationPlugins'表达的不满足依赖项:创建名称为'documentationPluginRegistry'的Bean时出错:FactoryBean在对象创建时抛出异常
排查解决步骤
- 核对Spring Boot与Swagger版本兼容性:
- Spring Boot 2.0-2.1版本适配Swagger 2.9.2
- Spring Boot 2.2及以上版本适配Swagger 3.0.0(注意依赖坐标改用
springfox-boot-starter,而非旧版的springfox-swagger2)
- 清理本地依赖缓存:删除Maven仓库中Swagger相关的旧版本jar包(如日志中的2.9.2版本),重新拉取依赖,避免版本混合冲突
- 检查配置类注解:Swagger 3.0.0无需
@EnableSwagger2,替换为@EnableOpenApi即可,误用旧注解会触发异常 - 排查依赖冲突:通过
mvn dependency:tree(Maven)或gradle dependencies(Gradle)查看依赖树,找出与Swagger冲突的模块,在配置文件中排除冲突依赖
内容的提问来源于stack exchange,提问作者Ahmet Özseven
相关产品推荐
相关产品推荐

