美文网首页
用Stream API写Swagger配置

用Stream API写Swagger配置

作者: 黄枣颖 | 来源:发表于2019-12-26 16:28 被阅读0次

分享一下平时写得比较规范的代码片段

@Data
@Configuration
@ConfigurationProperties(prefix = "swagger")
public class SwaggerProperties{
    private Boolean enabled = true;
    private List<String> basePath = Collections.emptyList();
    private List<String> excludePath = Collections.emptyList();
    private List<String> basePackage = Collections.emptyList();

    private String title = "标题";
    private String description = "描述";
    private String version = "版本";
    private String termsOfServiceUrl = "http://www.bocloud.com/terms";
    private Contact contact = new Contact("Author", "http://www.bocloud.com", "author@bocloud.com");
    private String license = "协议";
    private String licenseUrl = "http://www.bocloud.com/license";

    public ApiInfo apiInfo(){

        return new ApiInfo(title, description, version, termsOfServiceUrl, contact.toString(), license, licenseUrl);
    }

    public Predicate<String> excludePath(){
        return excludePath.stream()
                .map(PathSelectors::regex)
                .map(Predicates::not)
                .reduce(Predicates::or)
                .orElseGet(Predicates::alwaysFalse);
    }

    public Predicate<String> basePath(){
        return basePath.stream()
                .map(PathSelectors::regex)
                .reduce(Predicates::or)
                .orElseGet(Predicates::alwaysFalse);
    }

    public Optional<Predicate<RequestHandler>> apis(){
        return basePackage.stream()
                .map(RequestHandlerSelectors::basePackage)
                .reduce(Predicates::or);
    }

    public Predicate<String> paths(){
        return Predicates.or(excludePath(), basePath());
    }
}

相关文章

网友评论

      本文标题:用Stream API写Swagger配置

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