如何使用OpenAPI Generator生成FeignClient接口及带Lombok注解的模型?
如何使用OpenAPI Generator生成FeignClient接口及带Lombok注解的模型?
嘿,我来帮你搞定这个问题!你提到用openapi-generator-maven-plugin从OpenAPI spec生成Feign客户端和模型,我刚好做过类似的配置,下面一步步给你讲清楚怎么弄:
首先,你得在项目的pom.xml里配置好这个Maven插件,同时开启Feign和Lombok的支持。我给你整理了一份完整的配置示例,你可以直接参考:
<build> <plugins> <plugin> <groupId>org.openapitools</groupId> <artifactId>openapi-generator-maven-plugin</artifactId> <version>6.6.0</version> <!-- 建议用最新的稳定版本,功能更全 --> <executions> <execution> <id>generate-review-feign-clients</id> <goals> <goal>generate</goal> </goals> <configuration> <!-- 这里填你的OpenAPI spec文件路径,比如你示例里的那个yaml --> <inputSpec>${project.basedir}/src/main/resources/openapi/review-apis.yaml</inputSpec> <!-- 指定生成器类型为spring,这样才能适配Spring生态的Feign --> <generatorName>spring</generatorName> <!-- 生成代码的输出目录,默认在target下,也可以自定义 --> <output>${project.build.directory}/generated-sources/openapi</output> <!-- 下面是关键的配置项,专门用来开启Feign和Lombok支持 --> <configOptions> <!-- 核心开关:开启Feign客户端生成,对应你OpenAPI里的接口 --> <feign>true</feign> <!-- 让生成的模型类用Lombok注解,替代冗余的getter/setter --> <useLombok>true</useLombok> <!-- 可选:只生成接口定义,不生成默认实现类,代码更清爽 --> <interfaceOnly>true</interfaceOnly> <!-- 可选:指定基础包名,避免生成的代码散在默认包下 --> <basePackage>com.yourcompany.review.api</basePackage> <apiPackage>com.yourcompany.review.api.client</apiPackage> <modelPackage>com.yourcompany.review.api.model</modelPackage> <!-- 可选:给OpenAPI里标记为required的字段生成@NonNull注解,和Lombok适配更好 --> <useBeanValidation>true</useBeanValidation> </configOptions> </configuration> </execution> </executions> </plugin> </plugins> </build>
关键配置说明
<feign>true</feign>:这是生成Feign客户端的核心开关,开启后,你OpenAPI里的createNewReview这类接口会自动生成带@FeignClient注解的接口类,直接就能在Spring项目里注入使用。<useLombok>true</useLombok>:开启后,像你示例里的Review模型类,会自动带上@Data(或对应版本的Lombok注解),不用再生成一堆getter、setter、toString方法,完全符合Lombok的使用习惯。<interfaceOnly>true</interfaceOnly>:如果你只需要Feign的接口定义,不需要生成默认的实现类,开这个选项能让生成的代码更简洁。
额外的依赖准备
别忘了在项目里引入Lombok和Feign的依赖,不然生成的注解会报错:
<!-- Lombok依赖 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.28</version> <scope>provided</scope> </dependency> <!-- Spring Cloud OpenFeign依赖,根据你的Spring版本调整 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
执行生成
配置好之后,只需要运行这条Maven命令就能生成代码了:
mvn clean compile
生成的代码会在target/generated-sources/openapi目录下,你可以把这个目录设置成IDE的源码目录,直接在项目里引用生成的Feign接口和模型类。
备注:内容来源于stack exchange,提问作者Jeff
相关产品推荐
相关产品推荐

