我有一个Spring Boot application.yml
,其配置为Cloud Config:
spring:
cloud:
config:
uri: http://localhost:8080/config
name: ${cluster.name}
profile: ${cluster.idx}
我从加载JSON文件的自定义cluster.name
中读取cluster.idx
和PropertySouce
。但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。
答案 0 :(得分:3)
您无法使用属性源,因为它们尚不可用,并且不会在读取此文件时使用。不过,你有几个选择。首先,您可以将这些属性放入bootstrap.properties(如果您愿意,还可以将bootstrap.yml放入)。我怀疑你正在尝试做一些事情,但是应该使用配置文件的相应属性。在这种情况下,您可以创建bootstrap- {profile} .yml。因此,如果您使用-Dspring.profiles.active = dev运行,那么您将拥有一个bootstrap-dev.yml文件,该文件将包含此配置文件的值。
第二种更简单的方法是将这些作为参数传递给VM。 -Dcluster.name = foo -Dcluster.idx = bar