如何在swagger codegen中生成构造函数?

时间:2017-08-19 05:56:08

标签: java swagger-codegen

codegen没有生成任何构造函数。 我提到了petstore swagger文件,使用了最新的swagger codegen jar文件。

但是只生成了默认构造函数。

它不会根据其字段生成构造函数。

如何启用它?

2 个答案:

答案 0 :(得分:5)

如果您确实需要带有参数的构造函数,则可以通过修改以.moustache结尾的模板文件来实现。

"enable/use/modify" templates

我假设您将要编辑现有模板,并希望为每个模型构造一个构造器。

这是模型模板文件中构造函数的一个简单示例:

public {{classname}}( {{#vars}} {{datatype}} {{baseName}}{{^-last}},{{/-last}} {{#-last}}){
construct code here
}{{/-last}}{{/vars}}

请注意,这应该在{{#model}} {{/ model}}标签之间

有关胡子模板的更多信息,请参见

https://mustache.github.io/mustache.5.html

List of template variables

template examples for the codegen

答案 1 :(得分:0)

我首先要感谢@Viktor Baert的回答。尽管答案提供了方向,但仍不足以解决问题。请注意上述答案的变化和补充。

在构造函数签名中,此更改从 {{datatype}} 更改为 {{{datatypeWithEnum}}} 。此更改将支持使用泛型的所有属性,例如List。

第二个是将参数分配给局部变量。

将这些更改直接应用于pojo.mustache或覆盖它们时,结果是生成了可用的构造函数。这适用于swagger和openapi生成器。

public {{classname}}( {{#vars}} {{{datatypeWithEnum}}} {{baseName}}{{^-last}},{{/-last}} {{#-last}}){
  {{#vars}}
  this.{{baseName}} = {{baseName}};
  {{/vars}}
}{{/-last}}{{/vars}}

参考:add constructors to code generated by openapi codegen