九、Spring Cloud Config Server详解(二):Config Client客户端配置映射

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/makyan/article/details/88778510

1、创建一个项目,futurecloud-config-client,引入依赖spring-cloud-starter-config


<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--Spring Cloud Config 客户端依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
    <version>2.0.0.RELEASE</version>
</dependency>
<!--Spring Boot Actuator ,监控服务端变化-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>


2、Spring boot main


@SpringBootApplication
public class FutruecloudConfigClientApplication
{
    public static void main( String[] args )
    {

        SpringApplication.run(FutruecloudConfigClientApplication.class);
    }
}

3、创建一个controller,用于访问并展示Config Server返回来的信息


package com.futurecloud.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConfigClientController {

    /**
     * from 这个属性值,是配置在gitee上的配置文件中的属性
     */
    @Value("${from}")
    private String fromValue;

    /**
     * 返回配置文件中的值
     * @return
     */
    @GetMapping("/api/from")
    @ResponseBody
    public String getFromValue(){
        return fromValue;
    }
}

4、配置application.yml文件


spring:
  cloud:
    config:
      uri: http://localhost:11000/        #Config server的uri
      profile: dev                       #指定的环境
      label: master                      #指定分支,当使用git的时候,默认是master
  application:
    name: futurecloud      #指定gitee上的配置文件的应用名,代表要找name + profile 的配置文件,而不是此项目futurecloud-config-client的应用名
server:
  port: 7001   #当前服务的端口

参数说明:

  • spring.application.name:对应文件规则的应用名
  • spring.cloud.config.profile:对应环境名
  • spring.cloud.config.label:对应分支名
  • spring.cloud.config.uri:对应Config Server开放的地址

5、测试


Config Server 和 Config Client 这两个都没有注册到Eureka注册中心,这里只需要启动这两个项目
我们看到Config Client项目在启动的时候报错,错误信息如下:

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'from' in value "${from}"

报错是因为控制器中配置了 @Value("${from}") ,项目在启动过程中,就要查找这个配置文件,
所以,我们要在项目启动前就应该找到这个配置文件,创建bootstrap.yml配置文件,
将项目启动前加载的配置从application.yml配置文件中移到bootstrap.yml中,
bootstrap.yml配置信息如下:

spring:
  cloud:
    config:
      uri: http://localhost:7000/        #Config server的uri
      profile: dev                       #指定的环境
      label: master                      #指定分支,当使用git的时候,默认是master
  application:
    name: futurecloud      #指定gitee上的配置文件的应用名,代表要找name + profile 的配置文件,而不是此项目futurecloud-config-client的应用名

application.yml配置信息如下:

server:
  port: 7001   #当前服务的端口

重新启动项目成功,浏览器输入:http://localhost:7001/api/from ,返回成功
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/makyan/article/details/88778510