【问题标题】:Springfox and Avro Generated Java ClassesSpringfox 和 Avro 生成的 Java 类
【发布时间】:2020-06-24 15:10:23
【问题描述】:

我有一些使用 avro 编译器从 avro 模式生成的 java 类。我在我的 Spring Rest 控制器中使用它们并使用 Springfox 来生成一个 openapi 规范。因为生成的 avro 类有 getSchema()getSpecificData() 方法,它们会出现在 openapi 模型中。

有没有办法全局告诉 Springfox在类中包含某些命名字段?

【问题讨论】:

    标签: java swagger avro springfox


    【解决方案1】:

    我找到了一种使用插件的方法:

        @Bean
        public ModelPropertyBuilderPlugin removeAvroFieldsFromSwagger() {
            return new ModelPropertyBuilderPlugin() {
                @Override
                public void apply(ModelPropertyContext context) {
                    if( context.getBeanPropertyDefinition().isPresent() ){
                        BeanPropertyDefinition definition = context.getBeanPropertyDefinition().get();
                        if( "schema".equals(definition.getName()) && definition.getPrimaryType().getTypeName().contains("org.apache.avro.Schema")){
                            context.getBuilder().isHidden(true);
                        }
                        else if( "specificData".equals(definition.getName()) && definition.getPrimaryType().getTypeName().contains("org.apache.avro.specific.SpecificData")){
                            context.getBuilder().isHidden(true);
                        }
                    }
                }
    
                @Override
                public boolean supports(DocumentationType delimiter) {
                    return true;
                }
            };
        }
    

    【讨论】:

    • 这是我一直在寻找的解决方案,但是当我的字段为大写时,我得到了重复。它以大写形式显示 1,以小写形式显示 1。有什么解决办法吗?
    • 我搬离了 Avro,但我没有注意到这一点。也许您可以为这些字段添加特定的覆盖?
    猜你喜欢
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    相关资源
    最近更新 更多