Spring Boot整合Swagger2

2019-03-20  本文已影响0人  虫儿飞ZLEI

1.SpringBoot整合Swagger2并集成swagger-bootstrap-ui

1.1 导包

        <!-- swagger配置 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
            <exclusions>
                <exclusion>
                    <groupId>io.swagger</groupId>
                    <artifactId>swagger-models</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- https://mvnrepository.com/artifact/io.swagger/swagger-models -->
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-models</artifactId>
            <version>1.5.21</version>
        </dependency>

        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>swagger-bootstrap-ui</artifactId>
            <version>1.9.0</version>
        </dependency>

1.2 编写配置文件

@Configuration
@EnableSwagger2
public class Swagger2Config {

    @Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(basePackage("com.base.web.kylin.sjjsq.web"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder().title("大数据基础平台的swagger文档")
                .description("大数据基础平台的swagger文档")
                .termsOfServiceUrl("http://localhost:9099/index")
                .version("1.0")
                .build();
    }
}

1.3 在入口处添加注解

1.4 关于swagger各种注解的使用,跳过

1.5 启动项目,查看swagger的文档页面

swagger2的默认文档地址是http://localhost:9099/swagger-ui.html
由于使用了swagger-bootstrap-ui,可以使用http://localhost:9099/doc.html这个地址,界面更友好

2. 配置多路径扫描

两种方式

2.1 方式一

设置以“;”分割路径,但是会使用到过时代码

@Configuration
@EnableSwagger2
public class Swagger2Config {

    @Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(basePackage("com.base.web.kylin.sjjsq.web" +";"+"com.base.web.aisino.web"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder().title("大数据基础平台的swagger文档")
                .description("大数据基础平台的swagger文档")
                .termsOfServiceUrl("http://localhost:9099/index")
                .version("1.0")
                .build();
    }

    private static final String FENHAO = ";";

    public static Predicate<RequestHandler> basePackage(final String basePackage) {
        return input -> declaringClass(input).transform(handlerPackage(basePackage)).or(true);
    }

    private static Function<Class<?>, Boolean> handlerPackage(final String basePackage)     {
        return input -> {
            // 循环判断匹配
            for (String strPackage : basePackage.split(FENHAO)) {
                boolean isMatch = input.getPackage().getName().startsWith(strPackage);
                if (isMatch) {
                    return true;
                }
            }
            return false;
        };
    }

    private static Optional<? extends Class<?>> declaringClass(RequestHandler input) {
        return Optional.fromNullable(input.declaringClass());
    }
}

2.2 方式二

不会出现过时代码

@Configuration
@EnableSwagger2
public class Swagger2Config {

    Predicate<RequestHandler> selector1 = RequestHandlerSelectors.basePackage("com.base.web.kylin.sjjsq.web");
    Predicate<RequestHandler> selector2 = RequestHandlerSelectors.basePackage("com.base.web.aisino.web");

    @Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(Predicates.or(selector1,selector2))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder().title("大数据基础平台的swagger文档")
                .description("大数据基础平台的swagger文档")
                .termsOfServiceUrl("http://localhost:9099/index")
                .version("1.0")
                .build();
    }
}
上一篇 下一篇

猜你喜欢

热点阅读