SpringBoot整合Swagger

SpringBoot整合Swagger

1.首先创建一个springboot项目

2.引入依赖

<!--swagger-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>

3.编写Swagger配置类

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.niuben.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("测试Swagger")
                .description("这是一个Restful风格的API文档")
                .version("1.0")
                //.contact(new Contact("负责人", "http://xxx.xxx.com/负责人访问链接", "负责人邮箱"))
                .build();
    }
}

4.启动项目

对Swagger配置类的详解

配置扫描接口

 通过 .select() 方法,去配置扫描接口, RequestHandlerSelectors.xx 配置如何扫描接口

any():扫描所有,项目中的所有接口都会被扫描到
none():不扫描接口
basePackage(final String basePackage):根据包路径扫描接口
withMethodAnnotation(final Class<? extends Annotation> annotation):通过方法上的注解扫描,如withMethodAnnotation(GetMapping.class)只扫描get请求
withClassAnnotation(final Class<? extends Annotation> annotation):通过类上的注解扫描,如.withClassAnnotation(Controller.class)只扫描有controller注解的类中的接口

配置接口扫描过滤

any() :任何请求都扫描
none() :任何请求都不扫描
regex(final String pathRegex) :通过正则表达式控制
ant(final String antPattern) :通过ant()控制

动态配置根据环境时显示swagger

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket createRestApi(Environment environment) {
        // 设置要test、dev环境时显示swagger,处于prod时不显示
        Profiles of = Profiles.of("dev", "test");
        // 判断当前是否处于该环境
        boolean b = environment.acceptsProfiles(of);
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
                .enable(b) // 通过 enable() 接收此参数判断是否要显示
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.niuben.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("测试Swagger")
                .description("这是一个Restful风格的API文档")
                .version("1.0")
                //.contact(new Contact("负责人", "http://xxx.xxx.com/负责人访问链接", "负责人邮箱"))
                .build();
    }
}
posted @ 2019-11-18 15:21  如何下笔呢  阅读(1602)  评论(0编辑  收藏  举报
levels of contents