按照此 post 中的说明生成客户端库后
我试图在我的消费者中使用这个库,我添加了依赖项并在我的主类上添加了 @EnableFeignClients 注释。
然而,当启动应用程序时,Spring 提示存在不满足的依赖关系,从具有注释 @FeignClient
的库生成的接口(interface)似乎没有被扫描或实例化。
包含这样生成的 swagger 客户端库时是否需要进行任何特定配置?
最佳答案
我在同样的问题上挣扎了很长一段时间,我想分享一下我需要暂时解决这个问题的方法。默认情况下,swagger 将使用旧版 feign 客户端而不是新的 openfeign,因此您必须直接启用配置选项 generateForOpenFeign
。另外,如果您想使用 java8,为了避免生成默认接口(interface)(不执行任何操作),您可以将配置选项 defaultInterfaces
设置为 false。
这是我的 swagger_config.json
的样子:
{
"artifactId": "example-sdk",
"artifactVersion": "1.0.0",
"groupId": "com.example",
"apiPackage": "com.example.api",
"modelPackage": "com.example.model",
"configPackage": "com.example.configuration",
"generateForOpenFeign": true,
"java8": true,
"defaultInterfaces": false
}
生成源文件后,我必须更新 pom.xml
中 spring-cloud
和 spring-boot-starter
的依赖项,以使源代码可编译。
这是我更新的内容:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-parent</artifactId>
<version>Greenwich.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
要使用生成的假客户端,我必须输入
@EnableFeignClients(basePackages = {"com.example.api"})
在我的客户端应用程序的主类中。
我知道这不是最好的解决方案,如果有人有更好的想法,请提出建议。
关于java - 如何使用 Swagger 生成的客户端 (Feign),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52514482/