OpenAPI Generator为何生成带下划线双方法?能否配置为单方法?
OpenAPI Generator生成双方法的原因及单方法配置方案
一、生成两个方法的原因
你看到的双方法结构是**开启委托模式(delegatePattern)**的预期结果:
- 带下划线的
_getSpendings():负责绑定HTTP路由(带有@GetMapping注解),内部直接调用业务方法,是路由层的固定入口 - 不带下划线的
getSpendings():是预留的业务逻辑实现入口,默认返回NOT_IMPLEMENTED状态,注释提示开发者重写该方法实现具体业务
这个设计是为了将路由绑定与业务逻辑解耦,符合委托模式的思路。同时因为你配置了interfaceOnly=true,生成的是接口类,所以用default方法实现了这个委托结构。
二、是否属于配置错误
这不是配置错误,是开启delegatePattern=true后的标准生成逻辑,完全符合插件的设计预期。
三、修改为仅生成单个方法的方案
要只生成一个带路由注解的业务方法,只需关闭委托模式即可:
修改后的Maven插件配置
将configOptions中的<delegatePattern>true</delegatePattern>改为false,或者直接删除该配置项:
<plugin> <groupId>org.openapitools</groupId> <artifactId>openapi-generator-maven-plugin</artifactId> <version>${openapi-generator-maven-plugin.version}</version> <executions> <execution> <goals> <goal>generate</goal> </goals> <configuration> <inputSpec>${project.basedir}/src/main/resources/openapi.yaml</inputSpec> <generatorName>spring</generatorName> <apiPackage>club.allin.api</apiPackage> <modelPackage>club.allin.models</modelPackage> <skipValidateSpec>false</skipValidateSpec> <strictSpec>true</strictSpec> <generateApiDocumentation>true</generateApiDocumentation> <removeOperationIdPrefix>true</removeOperationIdPrefix> <configOptions> <useTags>true</useTags> <!-- 关闭委托模式,也可直接删除该行 --> <delegatePattern>false</delegatePattern> <interfaceOnly>true</interfaceOnly> <removeOperationIdPrefix>true</removeOperationIdPrefix> </configOptions> </configuration> </execution> </executions> </plugin>
修改后生成的代码
此时只会生成带@GetMapping注解的抽象方法(因interfaceOnly=true),需要你自行实现具体逻辑:
@GetMapping ResponseEntity<ResponseObject> getSpendings();
如果后续需要恢复路由与业务解耦的委托模式,再将delegatePattern改回true即可。
内容的提问来源于stack exchange,提问作者T.Bentes
相关产品推荐
相关产品推荐

