在 spring 引导 2.4 中从配置服务器读取 属性
Read property from config server in spring boot 2.4
我目前在 spring boot 2.3 中有以下实现。但是当我将其迁移到 spring boot 2.4 时。属性未从配置服务器读取。
代码
@ConditionalOnProperty({"app.xzy.hosts"})
public class clientConfig {
// implementation
}
bootstrap.yml
spring:
cloud:
config:
uri: http://main-config-server.com
username: user
password: pass
fail-fast: true
application.yml
app:
xyz:
hosts: ${app.main.config.hosts}
application.yml 在配置服务器中
app:
main:
config
hosts: http://myhost.com
此实现在 spring boot 2.3 中运行良好。但是在升级到 spring boot 2.4 之后,启动时出现以下错误。
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'app.xzy.hosts' in value "${app.main.config.hosts}"
at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:178)
at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:124)
at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:239)
at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:210)
终于找到问题了。
bootstrap.yml 文件默认不再启用。您需要通过在 spring cloud 2020.0.0 中添加新的依赖项来启用它,它解决了我的问题。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
参考:https://spring.io/blog/2020/10/07/spring-cloud-2020-0-0-m4-aka-ilford-is-available
我目前在 spring boot 2.3 中有以下实现。但是当我将其迁移到 spring boot 2.4 时。属性未从配置服务器读取。
代码
@ConditionalOnProperty({"app.xzy.hosts"})
public class clientConfig {
// implementation
}
bootstrap.yml
spring:
cloud:
config:
uri: http://main-config-server.com
username: user
password: pass
fail-fast: true
application.yml
app:
xyz:
hosts: ${app.main.config.hosts}
application.yml 在配置服务器中
app:
main:
config
hosts: http://myhost.com
此实现在 spring boot 2.3 中运行良好。但是在升级到 spring boot 2.4 之后,启动时出现以下错误。
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'app.xzy.hosts' in value "${app.main.config.hosts}"
at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:178)
at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:124)
at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:239)
at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:210)
终于找到问题了。
bootstrap.yml 文件默认不再启用。您需要通过在 spring cloud 2020.0.0 中添加新的依赖项来启用它,它解决了我的问题。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
参考:https://spring.io/blog/2020/10/07/spring-cloud-2020-0-0-m4-aka-ilford-is-available