Как использовать сгенерированный Swagger клиент (Feign)

После создания клиентской библиотеки, как описано в этом post Я пытаюсь использовать эту библиотеку в своем потребителе, я добавил зависимость и добавил аннотацию @EnableFeignClients к моему основному классу. Однако при запуске приложения Spring жалуется, что существует неудовлетворенная зависимость, сгенерированный интерфейс из библиотеки с аннотацией @FeignClient, похоже, не сканируется и не создается экземпляр. Есть ли какая-либо конкретная конфигурация при включении такой сгенерированной клиентской библиотеки swagger?


person Anthony Richir    schedule 26.09.2018    source источник
comment
Вы решили эту проблему?   -  person ascetic652    schedule 13.03.2020


Ответы (1)


Я борюсь с той же проблемой в течение довольно долгого времени, я хотел бы поделиться тем, что у меня есть, чтобы временно заставить это работать. По умолчанию swagger будет использовать устаревший клиент feign вместо нового openfeign, поэтому вам необходимо напрямую включить параметр конфигурации generateForOpenFeign. Кроме того, если вы хотите использовать java8, чтобы избежать создания интерфейсов по умолчанию (которые ничего не делают), вы установили для параметра конфигурации 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-cloud и spring-boot-starter в pom.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"}) в основной класс моего клиентского приложения. Я знаю, что это не лучшее решение, если у кого-то есть идея получше, посоветуйте.

person ascetic652    schedule 14.03.2020