java - 如何使用 Swagger 生成的客户端 (Feign)

标签 java spring-boot swagger swagger-codegen feign

按照此 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.xmlspring-cloudspring-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/

相关文章:

python-3.x - 猎鹰应用程序无法呈现Openapi(swagger)规范

java - XSD 未验证 - udemy 28 分钟内

java - 在java中打印字符串的前半部分

java - 新 MapReduce API 中Reducer 中每个键的输出文件

java - Spring Boot Security 未将登录端点列入白名单

Spring Boot jpa 使用连接映射中的多个键值进行选择

c# - 文档未能生成多个操作单个操作

c# - 在 Asp.Net Core 中使用 Swagger 未在请求中发送授权承载 token

java - 用于在 Java 中访问和检索已排序项目的高效集合

spring - 使用@WebFluxTest 测试 RouterFunction