如何用OpenAPI Generator为Set类型属性生成默认值?
解决OpenAPI Generator生成带默认值Set属性的问题
方法1:通过配置文件指定Set的默认实现
在OpenAPI Generator的配置文件(如config.json)中添加以下配置,指定Set类型的默认实例化类为LinkedHashSet:
{ "defaultInstantiationType": { "java.util.Set": "java.util.LinkedHashSet" }, "instantiateTypes": true }
同时保持你的OpenAPI Schema定义不变,必须包含default: []和uniqueItems: true:
scopes: type: array default: [] items: type: string uniqueItems: true
重新生成代码后,Set属性会自动带上new LinkedHashSet<>()的默认值初始化。
方法2:修改模板文件自定义初始化逻辑
如果配置文件的方式不满足需求,可以直接修改OpenAPI Generator的Java模型模板(通常是model.mustache):
- 找到模板中处理属性声明的代码段
- 针对Set类型的属性,替换为带初始化逻辑的代码:
{{#isSet}} @JsonProperty("{{name}}") {{#isValid}}@Valid{{/isValid}} private {{>imports}}{{complexType}} {{name}} = new LinkedHashSet<>(); {{/isSet}}
之后重新生成代码,即可得到带默认值的Set属性。
内容的提问来源于stack exchange,提问作者Jörgen Lundberg
相关产品推荐
相关产品推荐

