Springdoc GroupedOpenApi 不遵循使用 OperationCustomizer 设置的全局参数

Springdoc GroupedOpenApi not following global parameters set with OperationCustomizer

使用 GroupedOpenApi 定义 API 组时,添加到每个端点的通用参数集不在参数列表中。 下面是各自的代码

@Bean
public GroupedOpenApi v1Apis() {
    return GroupedOpenApi.builder().group("v1 APIs")
            // hide all v2 APIs
            .pathsToExclude("/api/v2/**", "/v2/**")
            // show all v1 APIs
            .pathsToMatch("/api/v1/**", "/v1/**")
            .build();
}

并且 class 将标准 Headers 添加到所有端点

@Component
public class GlobalHeaderAdder implements OperationCustomizer {
    @Override
    public Operation customize(Operation operation, HandlerMethod handlerMethod) {
        operation.addParametersItem(new Parameter().$ref("#/components/parameters/ClientID"));
        operation.addSecurityItem(new SecurityRequirement().addList("Authorization"));
        List<Parameter> parameterList = operation.getParameters();
        if (parameterList!=null && !parameterList.isEmpty()) {
            Collections.rotate(parameterList, 1);
        }
        return operation;
    }
}

实际输出

预期输出

解决方法

在应用程序属性文件中添加要 included/excluded 的路径可以解决错误。但是代码级别的东西将不胜感激。

在构建 Api 组时附加所需的 OperationCustomizer 对象。

@Bean
public GroupedOpenApi v1Apis(GlobalHeaderAdder globalHeaderAdder) {
    return GroupedOpenApi.builder().group("v1 APIs")
            // hide all v2 APIs
            .pathsToExclude("/api/v2/**", "/v2/**")
            // show all v1 APIs
            .pathsToMatch("/api/v1/**", "/v1/**")
            .addOperationCustomizer(globalHeaderAdded) 
            .build();
}

编辑:参考

更新了答案