【问题标题】:Spring Open-Feign fails to start with more than one spring.application.name used in Config-clientSpring Open-Feign 无法在 Config-client 中使用多个 spring.application.name 启动
【发布时间】:2019-06-25 06:11:42
【问题描述】:

在我的应用程序中,我们使用 spring 云配置,我们在其中托管文件支持的属性,如下所示

配置服务器

spring.profiles.active=native
spring.cloud.config.server.native.search-locations=file:///${SRC.HOME}/config/,file:///${SRC.HOME}/config/app1/,file:///${SRC.HOME}/config/app2/,file:///${SRC.HOME}/config/app3/

配置客户端

spring.profiles.active=dev,spring.cloud.config.uri=http://localhost:7070/,spring.application.name=app1,app2,app3

最近我们引入了 spring open-feign 并注意到主类只有在有单个应用程序名称时才会启动。当您以逗号分隔的方式(spring.application.name=app1,app2,app3)提供名称时,它会因以下异常而中断

问题

  1. 有人遇到过吗?
  2. 我可能做错了什么?
  3. 我是否需要更改配置加载方法,以便我提供 只有一个名字?
  4. 如何适应此功能保持配置加载方法 一样的。

    Spring-boot Version -2.1.5.RELEASE
    Open-Feign - 2.1.1.Release
    Spring-Cloud - Greenwich.SR1
    

例外

原因:java.lang.ClassCastException: java.util.ArrayList 不能 转换为 java.lang.String 在 com.netflix.config.ConfigurationBasedDeploymentContext.getValueFromConfig(ConfigurationBasedDeploymentContext.java:329) ~[archaius-core-0.7.6.jar:0.7.6]

【问题讨论】:

    标签: spring-boot spring-cloud-config spring-cloud-feign


    【解决方案1】:
    1. 每个应用程序只能有一个唯一的名称。 (考虑如果您使用 eurake 进行 regiter,您可以拥有同一个应用的多个实例来进行负载平衡)
    2. 如果您想为同一个应用使用不同的配置文件,您可以使用配置文件,例如spring.profiles.active=dev2。

    顺便说一句,不知道为什么需要为配置文件设置多个位置,但我认为所有配置文件的一个集合位置是常见的做法。

    【讨论】:

      猜你喜欢
      • 2019-06-27
      • 2017-10-12
      • 2017-09-22
      • 2021-02-06
      • 2015-10-12
      • 2018-02-01
      • 2020-10-05
      • 2017-08-17
      • 2018-03-13
      相关资源
      最近更新 更多