Autowire FeignClient через проект Maven - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть проекты, созданные с использованием Spring-boot, Maven и Kotlin. Я хочу представить некоторые Services и FeignClients в проекте maven, чтобы другие могли их использовать.

Для класса с аннотациями, такими как @Service, который работает хорошо. Но мне нужно выставить также FeignClients, которые аннотируются @FeignClient, но, как кажется, другие проекты не могут внедрить этих клиентов. Нужно ли что-то настраивать в моем поме. xml? Я использую spring-cloud-starter-openfeign

Вот код. Мой FeignClient выглядит так:

...
@FeignClient(name = "MyAPIClient", url = "\${url}", configuration = [MyApiClientConfiguration::class])
interface MyAPIClient {
...

И я пытаюсь внедрить этого Клиента в другой проект, например так:

...
@Service
class MyService(val myAPIClient: MyAPIClient) {
...

Ошибка довольно очевидна. Там написано, что не существует компонента с именем MyAPIClient. Так что это не видно или недоступно. «Подумайте об определении bean-компонента типа 'com.mycomp.MyAPIClient' в вашей конфигурации."

Нужно ли что-то явно настраивать, чтобы выставить OpenFeignClient другим проектам в моем pom. xml?

Спасибо за вашу помощь

1 Ответ

1 голос
/ 15 апреля 2020

Это будет работать автоматически, если у вас одинаковая структура пакетов в обоих проектах. См. , как поиск поддельных клиентов выполняется по умолчанию.

В других случаях вам необходимо указать basePackages из basePackageClasses атрибутов из @EnableFeignClients аннотация (в приложении, где вам нужно ввести своего симулированного клиента). Обратите внимание, что если вы это сделаете, то поведение по умолчанию (сканирование текущего пакета, в котором размещена эта аннотация) перестает работать, поэтому в этом случае вам также необходимо указать его вручную.

...