springboot集成swagger3.0

springboot集成swagger3.0

不同swagger版本访问路径

swagger版本访问路径
3.0.0之前http://127.0.0.1:8080/swagger-ui.html
3.0.0之后http://127.0.0.1:8080/swagger-ui/index.html

swagger不同版本启动类配置注解

swagger版本启动类配置注解
3.0.0之前@EnableSwagger2
3.0.0之后@EnableOpenApi

引入依赖

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>

yml配置

启动时如果出现以下报错Failed to start bean ‘documentationPluginsBootstrapper’; nested exception is java.lang.NullPointerException,需要在yml添加如下配置

spring:
  mvc:
    path-match:
      matching-strategy: ant_path_matcher

swagger配置类

swagger2.0和3.0指定的DocumentationType是不同的,2.0是SWAGGER_2,3.0是OAS_30;
Spring Boot 6.x 与Swagger 3.0.0 不兼容问题,会出现报错Failed to start bean ‘documentationPluginsBootstrapper’; nested exception is java.lang.NullPointerException,解决该问题方案如下:

@Configuration
public class SwaggerConfig {

    //访问http://127.0.0.1:1003/swagger-ui/index.html可以看到API文档
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("test")
                .description("test模块")
                .version("1.0")
                .license("转载请保留原文作者@Maruko")
                .licenseUrl("https://blog.csdn.net/qq_35705176/article/details/127994334?spm=1001.2014.3001.5502")
                .termsOfServiceUrl("")
                .build();
    }

    /**
     * 增加如下配置可解决Spring Boot 6.x 与Swagger 3.0.0 不兼容问题
     **/
    @Bean
    public WebMvcEndpointHandlerMapping webEndpointServletHandlerMapping(WebEndpointsSupplier webEndpointsSupplier,
                                                                         ServletEndpointsSupplier servletEndpointsSupplier,
                                                                         ControllerEndpointsSupplier controllerEndpointsSupplier,
                                                                         EndpointMediaTypes endpointMediaTypes,
                                                                         CorsEndpointProperties corsProperties,
                                                                         WebEndpointProperties webEndpointProperties,
                                                                         Environment environment) {
        List<ExposableEndpoint<?>> allEndpoints = new ArrayList();
        Collection<ExposableWebEndpoint> webEndpoints = webEndpointsSupplier.getEndpoints();
        allEndpoints.addAll(webEndpoints);
        allEndpoints.addAll(servletEndpointsSupplier.getEndpoints());
        allEndpoints.addAll(controllerEndpointsSupplier.getEndpoints());
        String basePath = webEndpointProperties.getBasePath();
        EndpointMapping endpointMapping = new EndpointMapping(basePath);
        boolean shouldRegisterLinksMapping = this.shouldRegisterLinksMapping(webEndpointProperties, environment, basePath);
        return new WebMvcEndpointHandlerMapping(endpointMapping, webEndpoints, endpointMediaTypes, corsProperties.toCorsConfiguration(), new EndpointLinksResolver(allEndpoints, basePath), shouldRegisterLinksMapping);
    }
    private boolean shouldRegisterLinksMapping(WebEndpointProperties webEndpointProperties, Environment environment, String basePath) {
        return webEndpointProperties.getDiscovery().isEnabled() && (StringUtils.hasText(basePath) || ManagementPortType.get(environment).equals(ManagementPortType.DIFFERENT));
    }

}

碰到问题

在集成swagger3.0时,碰到一个问题,Request body参数示例为空,后面发现是因为添加了懒加载的原因,需要去掉该配置

spring:
  application:
    name: producer-develop
#  main:
#    lazy-initialization: true
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值