Имя службы Spring Cloud @FeignClient из файла свойств

Я хочу установить имя службы в @FeignClient из файла свойств, например:

@FeignClient("${service.users}")

и установите имя в application.yml, например:

service.users: user-service

Где user-service — это имя, под которым сервис зарегистрирован в Eureka.

Я пробовал, и это не работает. Он жалуется на недопустимое имя.

Можно ли сделать что-то подобное?


person Oreste    schedule 17.11.2015    source источник
comment
Вы решили свою проблему? Если вы не получили правильный ответ, поделитесь своим тестовым проектом через git hub, я думаю, что я или кто-то другой сможет вам помочь.   -  person Sergii    schedule 13.07.2016
comment
stackoverflow.com/ вопросы/44143918/   -  person Sankara Narayanan    schedule 26.09.2018


Ответы (3)


Это открытая проблема. Пулл-реквесты приветствуются :-)

person spencergibb    schedule 17.11.2015
comment
Я попробую. Спасибо. - person Oreste; 18.11.2015
comment
Добавлено в этот коммит. - person Oreste; 18.02.2016

Это можно сделать так.

@FeignClient(name="fd-mobileapi-service",url="${fdmobile.ribbon.listOfServers}")

fdmobile.ribbon.listOfServers : value =>> это будет свойство в application.properties.

person cody123    schedule 17.02.2016
comment
Это не решение проблемы, требующей чтения свойства имени из файлов конфигурации. В любом случае, проблема была решена в следующем фиксации. Хотя я не знаю, когда он будет выпущен. - person Oreste; 18.02.2016

я пытался использовать аналогичную конфигурацию:

@FeignClient(name = "${spring.application.name:optional.application.name}")

приложение.yml, bootstrap.yml:

spring:
  application:
    name: my-test-application

проверка журнала после запуска

2016-05-24 16:11:00 [hystrix-my-test-application-1]                INFO  o.s.c.a.AnnotationConfigApplicationContext.prepareRefresh...

Также я нашел в активном сервисе zookeeper

>ls /service/my-test-application 
[8668663c-cce1-4181-94de-4ccaacefa7e3]

проверил в режиме отладки клиентский бин - он был создан

HardCodedTarget(type=EventBusClient, name=fnma-cp-test, url=http://my-test-application)

Так что эта конфигурация должна работать. Мои предложения:

  1. проверьте свой клиентский компонент во время выполнения с жестко закодированным именем (вы должны быть уверены, что он создается)
  2. проверьте область видимости для вашего файла конфигурации (ваша переменная из файла конфигурации может быть вне области видимости)
  3. проверьте свой application.yml - я не уверен, что весеннее сообщество по умолчанию зарезервировало имя переменной "service.users" (возможно, вам нужно добавить специальную зависимость). Или, если вы не знаете зависимость, но вам нужно ее использовать,

пожалуйста, создайте следующую файловую структуру:

 application.yml
 META-INF
 |-additional-spring-configuration-metadata.json

где у Additional-spring-configuration-metadata.json должно быть что-то вроде этого

{
  "properties": [
    {
      "name": "service.users",
      "type": "java.lang.String",
      "description": "Description for service.users.",
      "defaultValue": "Some_Value"
    }
  ]
}

В любом случае, если возникнут проблемы с additional-spring-configuration-metadata.json, вы можете найти объяснения здесь: введите здесь описание ссылки

person Sergii    schedule 24.05.2016