Spring cloud config客户端属性没有得到解决

Posted

技术标签:

【中文标题】Spring cloud config客户端属性没有得到解决【英文标题】:Spring cloud config client properties are not getting resolved 【发布时间】:2017-01-21 18:11:21 【问题描述】:

我对 Spring Cloud 和 Spring 外部配置的概念还很陌生,实际上是昨天开始的。

我创建了一个配置服务器,从本地 Git 存储库中选择配置,一个微服务也是配置客户端和一个 Eureka 驱动的服务发现服务器。

以下是我主要从互联网上的各种资源中借来的代码 -

配置服务器 - application.yml:

server:
  port: 8888

spring:
  cloud:
    config:
      server:
        git:
          uri: file:///$user.home/config-repo

配置服务器 - 主类(引导程序)

@EnableConfigServer
@SpringBootApplication
public class CloudConfigServerApplication 

    public static void main(String[] args) 
        SpringApplication.run(CloudConfigServerApplication.class, args);
    

config-repo 是我机器上的本地 git repo,并且有一个 .yml 文件,其中包含配置客户端应用程序的名称,即 authmanager.yml

eureka:
    client:
        serviceUrl:
            defaultZone: http://127.0.0.1:8761/eureka/
        healthcheck:
            enabled: true
        lease:
            duration: 5
spring:
    application:
        data:   
            mongodb:
                host: localhost
                port: 27017
                database: edc_mc
logging:
    level:
        org.exampledriven.eureka.customer.shared.CustomerServiceFeignClient: FULL

现在运行配置服务器后,下面是端点http://localhost:8888/authmanager/default的输出-

"name":"authmanager","profiles":["default"],"label":"master","version":"0ca6ca7b4502b9bb6ce1bf8efeb25516682cf79a","propertySources":["name":"file:///C:\\Users\\username/config-repo/authmanager.yml","source":"eureka.client.serviceUrl.defaultZone":"http://127.0.0.1:8761/eureka/","eureka.client.healthcheck.enabled":true,"eureka.client.lease.duration":5,"spring.application.data.mongodb.host":"localhost","spring.application.data.mongodb.port":27017,"spring.application.data.mongodb.database":"db_name","logging.level.org.exampledriven.eureka.customer.shared.CustomerServiceFeignClient":"FULL"]

微服务+Config客户端代码-

bootstrap.yml -

server:
  port: 9097

spring:
  application:
    name: authmanager
  cloud:
    config:
      uri: http://localhost:8888

客户端 - 主类(引导程序)-

@SpringBootApplication
@EnableDiscoveryClient
@EnableWebMvc
public class CloudLoginManagerApplication 

    public static void main(String[] args) 
        SpringApplication.run(CloudLoginManagerApplication.class, args);
    

配置客户端中的控制器类,我想在其中使用配置文件属性-

@RefreshScope
@RestController
@RequestMapping("/auth")
public class MyController 

    @Value("$spring.application.data.mongodb.database")
    String env_var;

为了清楚起见,跳过其余代码。

这是我得到的错误 -

Could not resolve placeholder 'spring.application.data.mongodb.database' in string value "$spring.application.data.mongodb.database"

server.port 等其他属性没有问题。

我也尝试过 Environment 接口方式,但也返回 null。

请大家指点一下,我现在快走到死胡同了。

谢谢,

AJ

【问题讨论】:

对我来说它的工作。检查您的代码中是否有任何拼写错误。 好的,抱歉回复晚了,这对我有用。一些我使用的配置参数不正确。基于此,我认为我的 cofnig 已经磨损了。无论如何,响应需要很多。 @aj1984你能告诉他究竟解决了什么问题吗?即使我也面临同样的问题 【参考方案1】:

要启用云配置,您必须将 spring-cloud-starter-config 添加到您的依赖项中。您可以通过检查 /env(可能需要添加执行器)来验证哪些属性可用。

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

【讨论】:

嗨,杰夫,很抱歉回复晚了,这对我有用。一些我使用的配置参数不正确。基于此,我认为我的 cofnig 已经磨损了。无论如何,响应需要很多。 嘿,杰夫,我又遇到了同样的问题,最后你建议的依赖确实有帮助。谢谢。 简单地说,如果您没有包含依赖项,即使将 org.springframework 设置为 TRACE,它也会失败并且不会打印错误消息,非常感谢 Jeff 指出这一点

以上是关于Spring cloud config客户端属性没有得到解决的主要内容,如果未能解决你的问题,请参考以下文章

在Spring cloud config客户端调用/env,密码属性显示“portal.db.password=***”

Spring Cloud Config采坑记

Spring Cloud Config

Spring Cloud-鸿鹄Cloud分布式微服务云系统—Config

Spring Cloud Config 加密和解密

Spring cloud--鸿鹄Cloud分布式微服务云系统—Config