Failedtostartbean‘springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper‘;

文章讲述了在SpringBoot2.6.x版本中集成Swagger3.0.0及以上时遇到的启动错误,涉及版本依赖、配置类修改以及BeanPostProcessor的使用,解决方法是调整处理映射的逻辑。

当你的spring-boot版本是2.6.x并且你的swagger版本是3.0.0以上的时候,项目启动会报错

swagger依赖
<dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>3.0.2</version>
</dependency>
//配置文件
spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher
在swagger配置类添加
 @Bean
    public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {
        return new BeanPostProcessor() {
 
            @Override
            public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
                if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) {
                    customizeSpringfoxHandlerMappings(getHandlerMappings(bean));
                }
                return bean;
            }
 
            private <T extends RequestMappingInfoHandlerMapping> void customizeSpringfoxHandlerMappings(List<T> mappings) {
                List<T> copy = mappings.stream()
                        .filter(mapping -> mapping.getPatternParser() == null)
                        .collect(Collectors.toList());
                mappings.clear();
                mappings.addAll(copy);
            }
 
            @SuppressWarnings("unchecked")
            private List<RequestMappingInfoHandlerMapping> getHandlerMappings(Object bean) {
                try {
                    Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
                    field.setAccessible(true);
                    return (List<RequestMappingInfoHandlerMapping>) field.get(bean);
                } catch (IllegalArgumentException | IllegalAccessException e) {
                    throw new IllegalStateException(e);
                }
            }
        };
    }
### Springfox Docket 插件用法及配置示例 #### 1. 引入依赖 为了使用 Springfox 来生成 API 文档,首先需要在项目的 `pom.xml` 文件中引入必要的 Maven 依赖: ```xml <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency> ``` 此依赖会自动配置 Swagger UI 和 Swagger 文档的生成。 #### 2. 创建配置类 创建一个新的 Java 类用于配置 Springfox 的行为。这个类通常命名为 `SwaggerConfig.java` 或类似的名称: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; @Configuration public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.OAS_30) .select() .apis(RequestHandlerSelectors.basePackage("com.example.controller")) .paths(PathSelectors.any()) .build(); } } ``` 这段代码定义了一个名为 `api()` 的 Bean,该 Bean 返回一个 `Docket` 实例并指定了要扫描的基础包路径以及所使用的 OpenAPI 版本[^3]。 #### 3. 启动应用程序 完成以上两步之后,重新编译并启动 Spring Boot 应用程序。默认情况下,Swagger UI 将可通过 http://localhost:8080/swagger-ui/index.html#/ 访问(注意 URL 可能因版本不同而有所变化)。如果遇到 404 错误,则可能是由于项目打包方式或其他配置问题引起的。 #### 4. 测试接口文档 一旦成功访问到 Swagger 页面,就可以看到所有已暴露出来的 RESTful 接口及其详细描述信息了。这些自动生成的文档不仅有助于开发者理解各个端点的功能,还可以作为测试工具直接调用相应的 HTTP 请求方法来进行功能验证。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值