用Stream API写Swagger配置

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

@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());
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容