如何使用Swagger生成的客户端(伪装)

时间:2018-09-26 09:32:48

标签: java spring-boot swagger swagger-codegen feign

按照post中所述生成客户端库后 我正在尝试在使用者中使用此库,我在主类中添加了依赖项并添加了@EnableFeignClients注释。 但是,在启动应用程序时,Spring抱怨存在不令人满意的依赖关系,从库中生成的带有注释@FeignClient的接口似乎没有被扫描或实例化。 包括这样生成的swagger客户程序lib时,有什么具体的配置可做吗?

1 个答案:

答案 0 :(得分:0)

我在同一个问题上苦苦挣扎了很长时间,我想分享一下我要暂时解决这个问题。默认情况下,swagger将使用旧的feign客户端而不是新的openfeign,因此您必须直接启用配置选项generateForOpenFeign。另外,如果要使用java8,为避免生成默认接口(不执行任何操作),请将config选项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
}

生成源文件之后,我必须更新spring-cloudspring-boot-starterpom.xml的依赖关系,以使源代码可编译。

这是我更新的内容:

<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"})在我的客户端应用程序的主类中。 我知道这不是最好的解决方案,如果有人有更好的主意,请提出建议。