rk
10 小时以前 832e40a8249ae15a5b2a7f01c78da4edc06cd55e
server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
package com.doumee.config.swagger;
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import com.google.common.base.Function;
import com.google.common.base.Optional;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.RequestHandler;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import java.util.function.Predicate;
/**
 * Swagger配置
 * @author Eva.Caesar Liu
 * @date 2022/03/11 10:24
 */
@Configuration
@EnableOpenApi
@EnableKnife4j
public class SwaggerConfig {
    @Value("${swagger.host:}")
    private String host;
    @Value("${swagger.enabled:}")
    private Boolean enabled;
    @Value("${swagger.title:接口文档}")
    private String title;
    @Value("${swagger.description:}")
    private String description;
    @Value("${project.version:}")
    private String version;
    @Bean
    public ApiInfo getApiInfo() {
        return new ApiInfoBuilder()
                .title(title)
                .description(description)
                .version(version)
                .build();
    }
    @Bean
    public Docket getDocket2() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(this.getApiInfo()).groupName("default")
                .host(host)
                .enable(enabled)
                .select()
                .apis( basePackage("com.doumee.api.gateway;"))
                // è®¾ç½®éœ€è¦è¢«æ‰«æçš„类,这里设置为添加了@Api注解的类
//                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
                .paths(PathSelectors.any())
                .build();
    }
    /**
     * é‡å†™basePackage方法,使能够实现多包访问,复制贴上去
     * @author  teavamc
     * @date 2019/1/26
     * @return com.google.common.base.Predicate<springfox.documentation.RequestHandler>
     */
    public static Predicate<RequestHandler> basePackage(String basePackage) {
        return input -> declaringClass(input).transform(handlerPackage(basePackage)).or(true);
    }
    private static Function<Class<?>, Boolean> handlerPackage(String basePackage)     {
        return input -> {
            // å¾ªçŽ¯åˆ¤æ–­åŒ¹é…
            for (String strPackage : basePackage.split(";")) {
                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());
    }
}