df.open.support.configuration.SwaggerConfiguration.java Source code

Java tutorial

Introduction

Here is the source code for df.open.support.configuration.SwaggerConfiguration.java

Source

package df.open.support.configuration;

import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import io.swagger.annotations.Api;
import lombok.Data;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.StringUtils;
import springfox.documentation.RequestHandler;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import static springfox.documentation.builders.RequestHandlerSelectors.withClassAnnotation;
import static springfox.documentation.builders.RequestHandlerSelectors.withMethodAnnotation;

/**
 * :
 * <p/>
 * Copyright: Copyright (c)
 * <p/>
 * Company:
 * <p/>
 *
 * @author (darrenfu)
 * @version 1.0.0
 * @date 2016/11/8
 */
@Configuration
@EnableSwagger2
@ConfigurationProperties(prefix = "df.open.swagger")
@ConditionalOnMissingBean(Docket.class)
@Data
public class SwaggerConfiguration {

    private String path;

    @Bean
    public Docket swaggerApi() {
        System.out.println("?Swagger-api");
        //selector 
        Predicate<RequestHandler> selector = Predicates.or((withClassAnnotation(Api.class)),
                (withMethodAnnotation(Api.class)));
        //RequestHandlerSelectors.any()
        //RequestHandlerSelectors.basePackage("com.example.controller")

        //path   RequestMapping 
        Predicate<String> apiPath = StringUtils.isEmpty(path) ? PathSelectors.any() : PathSelectors.ant(path);
        return new Docket(DocumentationType.SWAGGER_2).groupName("Base").select() // api?document
                .apis(selector) // api
                .paths(apiPath) // 
                .build().apiInfo(apiInfo());
    }

    private ApiInfo apiInfo() {
        ApiInfo apiInfo = new ApiInfo("API?", "Some custom description of API.", "API TOS", "Terms of service",
                "myeaddress@company.com", "License of API", "API license URL");
        return apiInfo;
    }
}