本例重新创建项目,构建一个空的mavan工程。
一、Config Server 从本地读取配置文件
新建一个moudle config_server ,pom添加依赖
-
<dependency>
-
<groupId>org.springframework.cloud</groupId>
-
<artifactId>spring-cloud-config-server</artifactId>
-
</dependency>
启动类添加 @EnableConfigServer 依赖开启配置服务功能,application.yaml添加配置如下:
-
server:
-
port: 9001
-
spring:
-
profiles:
-
active: native #从本地读取配置文件
-
cloud:
-
config:
-
server:
-
native:
-
search-locations: classpath:/shared #读取classpath下shared目录下的配置
在resource目录下新建shared目录,shared下新建 config-client-dev.yaml配置文件:
-
server:
-
port: 3000
-
foo: foo-version-v1
继续新建一个modulr config_client ,添加config 客户端依赖,如:
-
<dependency>
-
<groupId>org.springframework.cloud</groupId>
-
<artifactId>spring-cloud-starter-config</artifactId>
-
</dependency>
添加配置文件application.yaml:
-
spring:
-
application:
-
name: config-client
-
cloud:
-
config:
-
uri: http://localhost:9001 #读取配置文件的config服务地址
-
fail-fast: true #读取未成功则快速失败
-
profiles:
-
active: dev #读取dev配置文件
启动类添加代码,获取服务端配置的foo属性:
-
@Value("${foo}")
-
String foo ;
-
-
@GetMapping("/foo")
-
public String foo(){
-
return " 读取的远程服务的配置文件foo:"+foo;
-
}
此时编码完成,启动config-server、config-client,然而启动config-client的时候控制台一直报错:
一直访问的是默认的端口,并没有使用我们配置的端口,说明配置文件没有被正常加载。
通过调研发现,config-client中配置文件会首先加载bootstrap.yaml,将配置文件application.yaml 修改为 bootstrap.yaml,重新启动发现正常,在浏览器访问:http://localhost:3000/foo
会看到浏览器输出我们在服务端配置的信息: