来自属性文件

时间:2015-11-17 16:40:04

标签: spring-cloud netflix-feign

我想从属性文件中设置@FeignClient中的服务名称,如下所示:

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

并在application.yml中设置名称,例如:

service.users: user-service

其中user-service是在Eureka注册服务的名称。

我已经尝试过但它不起作用。它抱怨名字无效。

可以这样做吗?

3 个答案:

答案 0 :(得分:1)

这是一个开放的issue。欢迎拉请求: - )

答案 1 :(得分:1)

这可以这样做。

@FeignClient(名称=" FD-mobileapi服务",URL =" $ {fdmobile.ribbon.listOfServers}&#34)

fdmobile.ribbon.listOfServers:value =>>这将是application.properties中的一个属性。

答案 2 :(得分:1)

我尝试使用类似的配置:

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

application.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]

在调试模式客户端bean中检查 - 它已创建

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

所以这个配置应该有效。 我的建议是:

  1. 在运行时使用硬编码名称检查客户端bean(您需要确保创建)
  2. 检查配置文件的可见范围(您的配置文件中的变量可能超出范围)
  3. 检查你的application.yml - 我不确定,春天社区保留了变量名称&service; users.users'默认情况下(可能需要添加特殊依赖项)。或者,如果你不知道依赖,但需要使用一个,
  4. 请创建下一个文件结构:

     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 出现任何问题,您可以在此处找到解释:enter link description here