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

open-api-generator如何仅为特定类添加additionalModelTypeAnnotations注解

open-api-generator 定向为指定模型类添加自定义注解实现方案

该需求完全可实现。你当前使用的additionalModelTypeAnnotations是全局生效配置,设计目标就是给所有生成的模型类统一追加注解,原生不支持定向筛选类,要实现单类定向加注解,可按优先级选择以下方案:

方案1:使用Schema级扩展属性(优先推荐)

open-api-generator的Java代码生成器原生支持单Schema维度的注解配置,你只需要在OpenAPI规范文件(yaml/json格式)中,给需要加注解的对应模型Schema添加x-java-class-annotations扩展属性即可,注解只会加到指定类上,不会影响其他模型。
示例配置(OpenAPI 3.0写法):

components:
  schemas:
    # 这是你需要加自定义注解的目标类
    TargetCustomModel:
      x-java-class-annotations:
        - "@com.fasterxml.jackson.databind.annotation.JsonDeserialize(using = com.test.java.data.CustomDeserializer.class)"
      type: object
      properties:
        # 正常写该类的字段定义即可
    # 其他普通模型类不需要加这个扩展,就不会带上自定义注解
    NormalModel:
      type: object
      properties:
        id:
          type: integer

配置完成后正常执行生成逻辑即可,不需要修改你现有maven/gradle插件的其他全局配置,5.x及以上版本的open-api-generator均支持该扩展属性。

方案2:自定义代码生成模板

如果你不方便修改OpenAPI源文件,可以通过修改mustache生成模板实现定向逻辑:

  • 从你使用的对应版本open-api-generator依赖中,提取Java模型类对应的模板文件(通常为pojo.mustache)
  • 将模板复制到你项目的自定义模板目录下,在类定义上方增加判断逻辑,仅当类名匹配你的目标类时才输出自定义注解,核心逻辑示例:
{{#model}}
package {{package}};

// 原有import逻辑保持不变

// 新增定向判断:类名匹配目标类时才输出自定义注解
{{#equalsIgnoreCase classname "TargetCustomModel"}}
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(using = com.test.java.data.CustomDeserializer.class)
{{/equalsIgnoreCase}}

// 原有类注解、类定义、字段、方法的模板内容保持不变
public class {{classname}} {
  // 省略原有模板逻辑
}
{{/model}}
  • 在生成插件的配置中添加templateDirectory参数,指向你存放自定义模板的目录,生成时就会使用你修改后的逻辑。

方案3:生成后源码修改

如果以上两种方案都不适用,可以在代码生成阶段完成后,通过构建插件(比如Maven/Gradle的javaparser插件、源码增强插件),匹配到你需要修改的目标类源码,定向插入对应的注解即可,该方案灵活性最高,但配置成本也相对更高。

注意:

  1. 使用方案1时,请先删除你现有配置中additionalModelTypeAnnotations的全局注解配置,避免其他无关节点被统一加上注解;
  2. 不要尝试通过additionalModelTypeAnnotations的参数规则实现类过滤,该配置项没有提供类名匹配、筛选的相关能力,所有配置值都会无差别追加到所有生成的模型类上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:24:32