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

Swagger Codegen v2.3.1生成Spring Boot存根:DTO模型不生成hashCode和equals方法的配置

解决Swagger Codegen v2.3.1生成Spring DTO时移除hashCode()和equals()的方法

针对你的问题,Swagger Codegen v2.3.1确实没有内置的配置选项来直接禁止生成hashCode()和equals()方法——这也是你在config-help里找不到相关设置的原因。不过我们可以通过自定义模板的方式来实现需求,具体步骤如下:

步骤1:导出默认的Spring模板

首先需要把Swagger Codegen自带的Spring模板导出到本地,方便修改。执行以下命令:

swagger-codegen-cli generate -l spring -o ./spring-templates --export-dynamic-templates

执行后,./spring-templates目录下会包含所有Spring代码生成的模板文件。

步骤2:修改DTO模板,移除equals/hashCode生成逻辑

找到模板目录中的model.mustache文件(路径通常是./spring-templates/JavaSpring/model.mustache),打开后定位到生成equals()和hashCode()方法的代码块,直接删除或注释掉这部分内容。

默认模板里这部分大概是这样的:

@Override
public boolean equals(Object o) {
  // ... 生成的equals逻辑
}

@Override
public int hashCode() {
  // ... 生成的hashCode逻辑
}

把这两段完全删掉即可。

步骤3:配置DTO继承你的抽象类

为了让生成的DTO自动继承你已定义好的抽象类,需要在Swagger API定义中给每个模型添加扩展属性x-java-extended-class。比如:

components:
  schemas:
    YourDto:
      x-java-extended-class: com.yourcompany.base.AbstractBaseDto
      type: object
      properties:
        id:
          type: integer
        name:
          type: string

这样生成的YourDto类会自动继承AbstractBaseDto,而不会重写equals/hashCode方法。

步骤4:用自定义模板生成代码

最后,使用修改后的模板重新生成Spring Boot服务存根,执行命令:

swagger-codegen-cli generate -l spring -i your-swagger-spec.yaml -o ./your-service-stub -t ./spring-templates

其中:

  • -i 指定你的Swagger API定义文件路径
  • -o 指定生成代码的输出目录
  • -t 指定你修改后的模板目录

这样生成的DTO类就不会包含hashCode()和equals()方法,而是继承你抽象类中的实现了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:04:21