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 ,返回成功