我使用openapi生成器-maven插件从我的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();
}
发布于 2019-12-10 09:01:42
一些片段和链接,可以帮助你。
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模块并将所有胡子文件放在项目中的某个目录中--检查插件配置(在我的例子中是docs/openapi/template
)。
查找文件pojo.mustache
,它是生成POJO文件的模板。
此时,您需要了解一些基本的胡子语法。找出片段:
[...]
{{^isContainer}}
private {{{datatypeWithEnum}}} {{name}}{{#defaultValue}} = {{{.}}}{{/defaultValue}};
{{/isContainer}}
[...]
改为你想要的任何东西,例如:
[...]
{{^isContainer}}
private {{{datatypeWithEnum}}} {{name}}{{#defaultValue}} = {{{.}}}{{/defaultValue}}{{^defaultValue}}{{^isPrimitiveType}} = new {{datatypeWithEnum}}(){{/isPrimitiveType}}{{/defaultValue}};
{{/isContainer}}
[...]
此模板片段将为每个非原始数据类型生成new TypeYouWantToUse()
部件。
请注意,这只是一个简单的例子,如何继续前进。有许多角落的情况,例如enum
处理。
FUrther读数:
https://stackoverflow.com/questions/54692464
复制