2

无论如何让spring cloud config客户端的application.yml从spring config服务器读取值?比如我的spring cloud config客户端,application.yml是这样的

spring:
  application:
  name: clienttest
mvc:
view:
  prefix: /jsp/
  suffix: .jsp


server: 
  port: 8080
  context-path: /clienttest
  tomcat:
   uri-encoding: UTF-8

eureka:
 client:
   service-url: {"defaultZone":"http://dev.euraka01.app.com:8769/eureka/,http://dev.euraka02.app.com:8770/eureka/"}
instance:
 prefer-ip-address: true

我的 bootstrap.yml 文件如下

spring:
  application:
    name: clienttest
  cloud:
    config:
      name: clienttest
      uri: http://192.168.2.101:9000
      enabled: true
      profile: out_test
      label: master

现在对于 service-url 值,对于不同的环境,我必须配置不同的 eureka url 值,我的问题是,无论如何我可以在配置服务器中配置 service-url 值吗?就像我在 application.yml 中将值设置为 ${service-url} 一样,当我启动配置客户端服务器时,它会根据我在 bootstrap.yml 中设置的配置文件和标签从配置服务器获取值。

4

2 回答 2

1

您可以通过配置文件和标签在配置服务器上查找属性,其中标签是分支或标签。

/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties

在上面的示例中,您的配置服务器将尝试找到一个名为

clienttest-out_test.properties

在 master 分支的 git repo 中。

spring:
  application:
    name: clienttest
  cloud:
    config:
      profile: out_test
      label: master

在此处查看示例和一个很好的文档

于 2018-03-02T08:25:31.837 回答
0

Essex Boy,非常感谢您的帮助,我之前能够从不同的配置文件中读取值。我的问题是如何让 application.yml 从配置服务器获取值,现在我自己解决了,答案很简单,在应用程序中,设置像 ${service-url} 这样的值,完整的答案是如下:

在我的 application.yml 中,内容如下:

spring:
  application:
  name: clienttest

server: 
  port: 8080
  context-path: /clienttest
  tomcat:
   uri-encoding: UTF-8

eureka:
 client:
   service-url:     {"defaultZone":"${service-url}"}
instance:
 prefer-ip-address: true

请注意 service-url 的值,现在该值设置为 {"defaultZone":"${service-url}"},在我的配置服务器上的 application.properties 文件中,属性文件内容如下:

service-url=http://192.168.2.101:8769/eureka/,http://192.168.2.101:8770/eureka/

然后当我启动 mocroservice 时,它​​可以在http://192.168.2.101:8769/eureka/http://192.168.2.101:8770/eureka/上自行抵抗

这就是我想要的结果。

于 2018-03-02T09:01:11.740 回答