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
相关产品推荐
相关产品推荐

