You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需修改Mustache模板,如何用OpenAPI Generator生成不可变Java模型?

不修改Mustache模板生成不可变Java模型的OpenAPI Generator配置方案

方案1:启用Java Records生成(无需Lombok)

OpenAPI Generator v6.0.0及以上版本原生支持生成Java Records,无需修改模板,只需配置以下参数:

  • 命令行方式:
    openapi-generator generate -g java -i your-spec.yaml -o output-dir --additional-properties modelType=record
    
  • Maven插件配置片段:
    <plugin>
      <groupId>org.openapitools</groupId>
      <artifactId>openapi-generator-maven-plugin</artifactId>
      <version>7.6.0</version>
      <configuration>
        <inputSpec>${project.basedir}/src/main/resources/openapi.yaml</inputSpec>
        <generatorName>java</generatorName>
        <additionalProperties>
          <additionalProperty>modelType=record</additionalProperty>
        </additionalProperties>
      </configuration>
    </plugin>
    

配置后生成的模型会是标准Java Records,天然不可变,自带构造器、equals/hashCode/toString实现。

方案2:修复Lombok @Value注解下仍生成setter的问题

如果坚持使用Lombok @Value,需通过配置禁用setter生成:

  • 核心是在additionalProperties中添加generateSetters=false(部分旧版本用skipSetters=true),同时开启Lombok支持:
    命令行示例:
    openapi-generator generate -g java -i your-spec.yaml -o output-dir --additional-properties useLombok=true,lombokAnnotationsProvider=lombok,generateSetters=false
    
  • Maven插件中对应配置:
    <additionalProperties>
      <additionalProperty>useLombok=true</additionalProperty>
      <additionalProperty>lombokAnnotationsProvider=lombok</additionalProperty>
      <additionalProperty>generateSetters=false</additionalProperty>
    </additionalProperties>
    

此配置会让生成的类只包含@Value注解,不再生成setter方法,实现不可变。

方案3:针对Spring场景使用immutable参数

如果使用java-spring生成器,可直接配置immutable=true来生成不可变模型:

<additionalProperties>
  <additionalProperty>immutable=true</additionalProperty>
  <additionalProperty>useLombok=true</additionalProperty>
</additionalProperties>

生成的类会自动添加@Getter、@AllArgsConstructor且无setter,结合Lombok可实现不可变特性。

注意事项

  • 优先使用最新稳定版的OpenAPI Generator,旧版本可能不支持部分参数(比如modelType=record)
  • 不同生成器类型(java、java-spring等)的参数略有差异,需根据实际使用的生成器调整配置

内容的提问来源于stack exchange,提问作者Philip Kalela

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 23:22:42