带有占位符的Spring Cloud Client配置

时间:2017-01-04 17:53:27

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

我有一个Spring Boot application.yml,其配置为Cloud Config:

spring:
  cloud:
    config:
      uri: http://localhost:8080/config
      name: ${cluster.name}
      profile: ${cluster.idx}

我从加载JSON文件的自定义cluster.name中读取cluster.idxPropertySouce。但Spring Boot无法解析占位符。

13:04:37,370 ERROR [main] org.springframework.boot.SpringApplication(SpringApplication.java:839) : Application startup failed
java.lang.IllegalArgumentException: Could not resolve placeholder 'cluster.idx' in string value "${cluster.idx}" 

在尝试解析占位符之前,如何告诉Spring Boot加载PropertySource?提前谢谢。

我使用的是Sp Boot 1.4.3和Sp Cloud Config 1.2.2。

1 个答案:

答案 0 :(得分:3)

您无法使用属性源,因为它们尚不可用,并且不会在读取此文件时使用。不过,你有几个选择。首先,您可以将这些属性放入bootstrap.properties(如果您愿意,还可以将bootstrap.yml放入)。我怀疑你正在尝试做一些事情,但是应该使用配置文件的相应属性。在这种情况下,您可以创建bootstrap- {profile} .yml。因此,如果您使用-Dspring.profiles.active = dev运行,那么您将拥有一个bootstrap-dev.yml文件,该文件将包含此配置文件的值。

第二种更简单的方法是将这些作为参数传递给VM。 -Dcluster.name = foo -Dcluster.idx = bar