【问题标题】:Read property from config server in spring boot 2.4在 Spring Boot 2.4 中从配置服务器读取属性
【发布时间】:2021-01-26 09:57:32
【问题描述】:

我目前在 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)
   

【问题讨论】:

  • 用于指定配置服务器 url 的参数名称是什么
  • @MohdAlomar 我已经用属性更新了问题。

标签: java spring spring-boot microservices


【解决方案1】:

终于解决了问题。

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

【讨论】:

    猜你喜欢
    • 2016-09-08
    • 2021-05-02
    • 2017-07-22
    • 2020-11-25
    • 2018-04-14
    • 2018-04-28
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多