Spring Cloud Config 客户端未从配置服务器加载值 [英] Spring Cloud Config client not loading the value from config server

查看:104
本文介绍了Spring Cloud Config 客户端未从配置服务器加载值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在尝试运行 Spring Cloud Config Client 时遇到以下问题:

I am facing below issue while I try to run my Spring Cloud Config Client:

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'DATABASE_NAME' in string value "${DATABASE_NAME}"
    at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:174)
    at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:126)
    at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:204

我在POM.xml中的依赖如下:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.6.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencyManagement>
    <dependencies>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config</artifactId>
            <version>1.1.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Brixton.SR3</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

    </dependencies>
</dependencyManagement>

<dependencies>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

</dependencies>

bootstrap.yml

spring:
application:
name: my-config-client
cloud:
services:
  registrationMethod: route
config:
  enabled: true
  uri: http://localhost:${config.port:8888}

application.yml 如下:

# HTTP Server
server:
port: 2222

# Spring properties
spring:
  profiles: 
    active: dev

#Disable HTTP Basic Authentication
security:
  basic:
    enabled: false

我试图访问该属性的类如下:

The class where I am trying to access the property is as below:

@RefreshScope
@Component
public class MyProperty {

    @Value("${DATABASE_NAME}")
    private String databaseName;


    public String getDatabaseName() {
        return databaseName;
    }
}

我的配置服务器运行良好.当我在浏览器 http://localhost:8888/configserver/dev 上使用这个 url 时,它给出了以下内容结果:

My config server is running fine. When I use this url on browser http://localhost:8888/configserver/dev, It gives the below result:

{  
   "name":"configserver",
   "profiles":[  
      "dev"
   ],
   "label":"master",
   "version":"c991526a93fb776e37e18e138c7485d894d6ea4f",
   "propertySources":[  
      {  
         "name":"https://onestash.abc.com/scm/kapmol/microservice-config-repo.git/configserver.properties",
         "source":{  
            "DATABASE_NAME":"ABC",
            "CONVERT_USERS":"Y",
            "LRDS_JNDI_NAME":"jdbc/tds_new"
         }
      }
   ]
}

我尝试了所有面临此问题的帖子.但是,它对我不起作用.可能是,我错过了一些要点.如果有人可以提供帮助,那就太好了.

I tried with all the posts who were facing this issue. But, it is not working for me. May be, I am missing some points. If anybody can provide help, it would be great.

谢谢

推荐答案

新的 spring cloud 模块有一些突破性的变化阅读更多:此处.

There is some breaking changes with the new spring cloud module read more: here.

由 spring-cloud-commons 提供的 Bootstrap 不再由默认.如果您的项目需要它,可以通过以下方式重新启用它属性或由新的启动器.

Bootstrap, provided by spring-cloud-commons, is no longer enabled by default. If your project requires it, it can be re-enabled by properties or by a new starter.

  • 通过设置 spring.cloud.bootstrap.enabled=true 或 spring.config.use-legacy-processing=true 的属性重新启用.这些需要设置为环境变量、java 系统属性或命令行论证.

  • To re-enable by properties set spring.cloud.bootstrap.enabled=true or spring.config.use-legacy-processing=true. These need to be set as an environment variable, java system property or a command line argument.

另一个选项是包含新的 spring-cloud-starter-bootstrap

The other option is to include the new spring-cloud-starter-bootstrap

通过添加这些依赖项对我有用:

It worked for me by adding these dependencies:

<parent>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-parent</artifactId>
  <version>2020.0.0</version>
  <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencyManagement>
   <dependencies>
     <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-dependencies</artifactId>
       <version>${spring-cloud.version}</version>
       <type>pom</type>
       <scope>import</scope>
       </dependency>
     </dependencies>
</dependencyManagement>

    <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-bootstrap</artifactId>
    </dependency>
       <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-config</artifactId>
     </dependency>

这篇关于Spring Cloud Config 客户端未从配置服务器加载值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆