Spring Cloud Config 为分布式系统中的外部配置提供服务器端和客户端支持。使用 Config Server,您可以集中管理所有环境中应用程序的外部配置。
Spring Cloud Config就是一个配置中心,所有的服务都可以从配置中心取出配置,而配置中心又可以从GitHub远程仓库中获取云端的配置文件,这样只需要修改GitHub中的配置即可对所有的服务进行配置管理了
服务端配置
创建一个新项目用于配置中心的服务器,并将其注册到eureka服务器中
先导入依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
启动类添加上注解
@SpringBootApplication
@EnableConfigServer
public class ConfigApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigApplication.class, args);
}
}
修改配置文件
server:
port: 8700
spring:
application:
name: configserver
eureka:
client:
service-url:
defaultZone: http://localhost:8801/eureka, http://localhost:8802/eureka
然后在本地创建一个git仓库用于保存配置文件,注意文件名称最好是{服务名称}-{环境}.yml
修改configserver的配置文件
spring:
cloud:
config:
server:
git:
# 这里填写的是本地仓库地址,远程仓库直接填写远程仓库地址 http://git...
uri: file://D:\configRepo
# 默认分支设定为你自己本地或是远程分支的名称
default-label: master
启动配置服务器,可以通过以下格式进行配置文件的访问
-
http://localhost:8700/{服务名称}/{环境}/{Git分支}
-
http://localhost:8700/{Git分支}/{服务名称}-{环境}.yml
比如
http://localhost:8700/bookservice/prod/main
localhost:8700/master/bookservice-dev.yml
除了使用Git来保存之外,还支持一些其他的方式
客户端配置
服务端配置完成之后,还需要配置一下客户端。如果云端存储着所有配置,我们可以删除原来的application.yml
文件(也可以保留,最后无论是远端配置还是本地配置都会被加载),改用bootstrap.yml
(在application.yml之前加载,可以实现配置文件远程获取)
先导入相关依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
配置bootstrap.yml文件
spring:
cloud:
config:
# 名称,其实就是文件名称
name: bookservice
# 配置服务器的地址
uri: http://localhost:8700
# 环境
profile: prod
# 分支
label: main
这样就完成了远程调用服务端的配置