加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

碰一碰:Swagger3就是比2简单粗暴

发布时间:2021-05-29 14:05:12 所属栏目:编程 来源:互联网
导读:Swagger3集成 Swagger目前最新版本是3.0.0,在Spring Boot应用中集成Swagger3比老的Swagger2简单多了,它提供了一个Starter组件。 dependency groupIdio.springfo
副标题[/!--empirenews.page--]

Swagger目前最新版本是3.0.0,在Spring Boot应用中集成Swagger3比老的Swagger2简单多了,它提供了一个Starter组件。

<dependency> 

    <groupId>io.springfox</groupId> 

    <artifactId>springfox-boot-starter</artifactId> 

    <version>3.0.0</version> 

</dependency> 

就这就可以了,简单不?

至于有的教程说还要开启注解@EnableOpenApi,完全不需要。因为在springfox-boot-starter-3.0.0.jar下你可以找到一个spring.factories,熟悉Spring Boot的同学都知道这个是一个Spring Boot 特有的SPI文件,能够自动的发现并注册Starter组件的配置。里面有这样的配置:

# Auto Configure 

org.springframework.boot.autoconfigure.EnableAutoConfiguration= 

springfox.boot.starter.autoconfigure.OpenApiAutoConfiguration 

顺藤摸瓜,找到总的配置类OpenApiAutoConfiguration:

@Configuration 

@EnableConfigurationProperties(SpringfoxConfigurationProperties.class) 

@ConditionalOnProperty(value = "springfox.documentation.enabled", havingValue = "true", matchIfMissing = true) 

@Import({ 

    OpenApiDocumentationConfiguration.class, 

    SpringDataRestConfiguration.class, 

    BeanValidatorPluginsConfiguration.class, 

    Swagger2DocumentationConfiguration.class, 

    SwaggerUiWebFluxConfiguration.class, 

    SwaggerUiWebMvcConfiguration.class 

}) 

@AutoConfigureAfter({ WebMvcAutoConfiguration.class, JacksonAutoConfiguration.class, 

    HttpMessageConvertersAutoConfiguration.class, RepositoryRestMvcAutoConfiguration.class }) 

public class OpenApiAutoConfiguration { 

 

一些发现

我们找到了关键的一个地方@ConditionalOnProperty注解声明了当springfox.documentation.enabled为true时启用配置,而且默认值就是true。这非常有用,Swagger仅仅建议在开发阶段使用,这个正好是个开关。另外有时候我们自定义配置的时候最好把这个开关也加上:

// 自定义swagger3文档信息 

@Configuration 

@ConditionalOnProperty(value = "springfox.documentation.enabled", havingValue = "true", matchIfMissing = true) 

public class Swagger3Config { 

    @Bean 

    public Docket createRestApi() { 

        return new Docket(DocumentationType.OAS_30) 

                .apiInfo(apiInfo()) 

                .select() 

                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) 

                .paths(PathSelectors.any()) 

                .build(); 

    } 

 

    private ApiInfo apiInfo() { 

        return new ApiInfoBuilder() 

                .title("Swagger3接口文档") 

                .description("更多请咨询felord.cn") 

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读