簡體   English   中英

openapi 生成 - 初始化對象

[英]openapi generation - initialize objects

我使用 openapi-generator-maven-plugin 從我的 yml 文件生成代碼。

<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>3.3.4</version>

當從 yml 生成對象時,生成的代碼總是生成對象並用 null 初始化它們。

例如:

public class Foo   {
  @JsonProperty("bar")
  private Bar bar = null;
}

有沒有辦法用對象本身初始化對象,例如:

public class Foo   {
  @JsonProperty("bar")
  private Bar bar = new Bar();
}

一些可以幫助您的片段和鏈接。

pom.xml插件配置:

<plugin>
    <groupId>org.openapitools</groupId>
    <artifactId>openapi-generator-maven-plugin</artifactId>
    <version>4.2.2</version>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <inputSpec>${project.basedir}/docs/openapi/api.yml</inputSpec>
                <generatorName>java</generatorName>
                <templateDirectory>docs/openapi/template</templateDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

OpenAPI 生成器的 Java 模塊復制默認模板,並將所有 mustache 文件放在您的項目中的某個目錄中 - 檢查插件配置(在我的情況下是docs/openapi/template )。

找到文件pojo.mustache ,它是生成 POJO 文件的模板。

此時您需要了解一些基本的 Mustache 語法。 查找 sych 片段:

[...]
{{^isContainer}}
  private {{{datatypeWithEnum}}} {{name}}{{#defaultValue}} = {{{.}}}{{/defaultValue}};
{{/isContainer}}
[...]

更改為您想要的任何內容,例如:

[...]
{{^isContainer}}
private {{{datatypeWithEnum}}} {{name}}{{#defaultValue}} = {{{.}}}{{/defaultValue}}{{^defaultValue}}{{^isPrimitiveType}} = new {{datatypeWithEnum}}(){{/isPrimitiveType}}{{/defaultValue}};
{{/isContainer}}
[...]

此模板片段將為每個非原始數據類型生成new TypeYouWantToUse()部分。

請注意,這只是如何進一步進行的一個簡單示例。 有許多極端情況,例如enum處理。

進一步閱讀:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM