如何使用 springdoc 更改 Swagger 文档中 LocalDateTime 的默认模式?

How to change default schema of LocalDateTime in Swagger documentation using springdoc?

我们使用 Spring Boot 和 https://springdoc.org/ 生成 OpenApi 文档。我们想更改 LocalDateTime 的默认架构,因此每次使用 LocalDateTime 时我们都没有相同的注释。所以,我补充说:

    static { 
        SpringDocUtils.getConfig().replaceWithSchema(LocalDateTime.class, 
                new StringSchema().example("2021-07-05T10:35:17.000").pattern("\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[.]\d{3}")); 
    } 

它起作用了。问题是现在无法为特定字段添加自定义描述或示例:

    @Schema(description = "important date") 
    private LocalDateTime aDate; 

如您所见,Swagger 中缺少以下描述-UI: screenshot with missing description

可以修复吗?还有另一种方法可以为 LocalDateTime 设置默认的自定义架构吗?

您可以使用 OpenAPICustomerCustomiser

@Bean
public OpenApiCustomiser openAPICustomiser() {​​​​​​​​​
    return openApi -> {​​​​​​​​​
        openApi.getComponents().getSchemas().forEach((s, schema) -> {​​​​​​​​​
            Map<String, Schema> properties = schema.getProperties();
            if (properties == null) {​​​​​​​​​
                properties = Map.of();
            }​​​​​​​​​
            for (String propertyName : properties.keySet()) {​​​​​​​​​
                Schema propertySchema = properties.get(propertyName);
                if (propertySchema instanceof DateTimeSchema) {​​​​​​​​​
                    properties.replace(propertyName, new StringSchema()
                            .example("2021-07-05T10:35:17.000")
                            .pattern("^\d{​​​​​​​​​4}​​​​​​​​​-\d{​​​​​​​​​2}​​​​​​​​​-\d{​​​​​​​​​2}​​​​​​​​​T\d{​​​​​​​​​2}​​​​​​​​​:\d{​​​​​​​​​2}​​​​​​​​​:\d{​​​​​​​​​2}​​​​​​​​​[.]\d{​​​​​​​​​3}​​​​​​​​​$")
                            //copies original description
                            .description(propertySchema.getDescription()));
                }​​​​​​​​​
            }​​​​​​​​​
        }​​​​​​​​​);
    }​​​​​​​​​;
}​​​​​​​​​