java 为什么OpenAPI隐藏final字段?

t98cgbkg  于 4个月前  发布在  Java
关注(0)|答案(1)|浏览(49)

我正在尝试使用OpenAPI从micronaut应用程序中的Java对象和控制器构建REST API。我注意到DTO的最终成员被排除在生成的描述符之外(运行应用程序中的swagger-ui.html),但我不明白为什么。
使用此代码,所有成员都会出现在API中。

public class Overview {
    public String status;
    public Table table1 = new Table();
    public Table table2 = new Table();
}

个字符
只有第一个成员是可见的,为什么?

public class Overview {
    public String status;
    public final Table table1;
    public final Table table2;
}
components:
  schemas:
    Overview:
      type: object
      properties:
        status:
          type: string

的字符串

idfiyjo8

idfiyjo81#

在您的情况下,DTO的最终成员被排除在生成的描述符之外的原因是因为JavaBean Introspection API集成使用Java Bean Introspection API从Java类生成OpenAPI规范。根据Java Bean标准,final字段不会被考虑用于自省。这意味着final字段不会被包含在生成的OpenAPI规范中。如果你想要final字段字段出现在生成的规范中,您可以使用Jackson库中的@JsonProperty注解来包含它们:

public class Overview {
    public String status;
    @JsonProperty
    public final Table table1;
    @JsonProperty
    public final Table table2;
}

字符串
这样,最后的字段将包含在生成的规范中,它们将出现在swagger-ui.html中。

相关问题