[英]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.