美文网首页
Swagger2多包实现方法

Swagger2多包实现方法

作者: kacen | 来源:发表于2020-09-13 13:21 被阅读0次

这里直接贴代码了哦,看不懂的到我的上篇文章查看哦Swagger2使用教程详解(包含注解)
提示:网上有种declaringClass的使用方法,该方法在后面已经被弃用,请使用我写的方法就好啦!

···
//定义分割符号
private static final String SPLITOR = ";";

public class SwaggerConfig implements WebMvcConfigurer {
    @Bean
    public Docket createRestApi() {
        log.info(""+swaggerEnabled);
        return new Docket(DocumentationType.SWAGGER_2)
                .useDefaultResponseMessages(false)
                .apiInfo(apiInfo())
                .select()
                //这里用;隔开写多个就可以喽
                .apis(RequestHandlerSelectors.basePackage("路径;路径;路径")
                .paths(PathSelectors.any())
                .build();
    }

    ···
  
    /**
     * 切割扫描的包生成Predicate<RequestHandler>
     * @param basePackage
     * @return
     */
    public static Predicate<RequestHandler> scanBasePackage(final String basePackage) {
        if(StringUtils.isBlank(basePackage))
            throw new NullPointerException("basePackage不能为空,多个包扫描使用"+SPLITOR+"分隔");
        
        String[] controllerPack = basePackage.split(SPLITOR);
        Predicate<RequestHandler> predicate = null;
        for (int i = controllerPack.length -1; i >= 0 ; i--) {
            String strBasePackage = controllerPack[i];
            if(StringUtils.isNotBlank(strBasePackage)){
                Predicate<RequestHandler> secPredicate = RequestHandlerSelectors.basePackage(strBasePackage);
                predicate = predicate == null ? secPredicate : Predicates.or(secPredicate,predicate);
            }
        }
        if(predicate == null) 
            throw new NullPointerException("basePackage配置不正确,多个包扫描使用"+SPLITOR+"分隔");
        return predicate;
    }

    ···
}

相关文章

网友评论

      本文标题:Swagger2多包实现方法

      本文链接:https://www.haomeiwen.com/subject/inpnektx.html