Spring 带占位符的云客户端配置
Spring Cloud Client Config with placeholders
我有一个 Spring 启动 application.yml
,云配置的配置如下:
spring:
cloud:
config:
uri: http://localhost:8080/config
name: ${cluster.name}
profile: ${cluster.idx}
我从加载 JSON 文件的自定义 PropertySouce
读取了 cluster.name
和 cluster.idx
。但是 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。
您将无法使用 属性 资源,因为它们尚不可用,并且在读取此文件时也不可用。不过,您有几个选择。首先,您可以将这些属性放入 bootstrap.properties(或 bootstrap.yml,如果您愿意)。我怀疑您正在尝试做一些配置文件驱动的事情,并且应该为配置文件使用适当的属性。在这种情况下,您可以创建 bootstrap-{profile}.yml。因此,如果您是 运行 -Dspring.profiles.active=dev,您将拥有一个包含此配置文件值的 bootstrap-dev.yml 文件。
第二种更简单的方法是将这些作为参数传递给 VM。 -Dcluster.name=foo -Dcluster.idx=bar
我有一个 Spring 启动 application.yml
,云配置的配置如下:
spring:
cloud:
config:
uri: http://localhost:8080/config
name: ${cluster.name}
profile: ${cluster.idx}
我从加载 JSON 文件的自定义 PropertySouce
读取了 cluster.name
和 cluster.idx
。但是 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。
您将无法使用 属性 资源,因为它们尚不可用,并且在读取此文件时也不可用。不过,您有几个选择。首先,您可以将这些属性放入 bootstrap.properties(或 bootstrap.yml,如果您愿意)。我怀疑您正在尝试做一些配置文件驱动的事情,并且应该为配置文件使用适当的属性。在这种情况下,您可以创建 bootstrap-{profile}.yml。因此,如果您是 运行 -Dspring.profiles.active=dev,您将拥有一个包含此配置文件值的 bootstrap-dev.yml 文件。
第二种更简单的方法是将这些作为参数传递给 VM。 -Dcluster.name=foo -Dcluster.idx=bar