SpringCloud Conf简介
- spring cloud项目中有大量的微服务,有时候将它们的配置信息进行统一管理会更有利于开发以及项目的需要, SpringCloud Conf就是这样一个统一管理配置文件的工具。
- Spring Cloud Config支持在Git, SVN和本地存放配置文件,使用Git或者SVN存储库可以很好地支持版本管理,Spring默认配置是使用Git存储库。
- SpringCloud Conf分为三个部分组成,配置文件中心,服务端,客户端
- 配置文件中心:即存放配置文件的位置
- 服务端:管理配置文件中心的配置文件,并提供服务给客户端
- 客户端:同实际微服务绑定,根据条件从服务端获取所需的配置信息
Server 端代码
1.添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
</dependencies>
2.入口程序添加注解@EnableConfigServer
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
3.配置文件
- 我这里将配置文件的位置放置在github上,下方github文件附图,我创建了两个配置文件application.yml,flower-dev.yml
server:
port: 8888
spring:
cloud:
config:
server:
git:
uri: https://github.com/xxxx/xxxx # 文件存放位置
clone-on-start: true # 默认情况下,服务器首次请求配置时克隆远程存储库。可以将服务器配置为在启动时克隆存储库
username:
password:
4.通过url直接访问服务端获取配置文件
-
如下是四种获取配置文件的url模板,首先我们要了解application, profile, label的含义
-
label: 代表的是git的版本,如上图的版本(branch)就是为master
-
配置文件名的命名格式为{application}-{profile},如果配置文件没"-"划分,则全部代表为application,无profile。但是还是建议按规范命名
-
如果url链接无法匹配到对应的文件,服务端会获取默认文件application.yml返回
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
- 访问示例:
- http://localhost:8888/application-profile.yml
- http://localhost:8888/master/flower-dev.yml
- http://localhost:8888/flower/dev/master
- http://localhost:8888/application/dev/master
client 客户端
1.添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
2.添加配置文件bootstrap.yml
- bootstrap.yml配置文件中为链接server端的配置信息
- 微服务启动时,客户端会先加载bootstrap.yml文件,并从服务端获取配置信息后才加载本地的application.yml文件,所以链接server端的配置信息必须先写在bootstrap.yml文件中
- 在客户端依然可以配置profile,label,application三个信息,服务端就是依据这三个信息匹配到对应的配置文件
spring:
cloud:
config:
uri: http://localhost:8888
profile: dev
label: master # 当configserver的后端存储是Git时,默认就是master
application:
name: flower
小结
- 上面只提供了一种简单的配置文件存储及获取方式,即单仓库,多文件,通过简单的名称匹配来获取。实际上spring cloud conf支持多仓库,多目录配置,以及提供各种复杂的模式匹配方式获取配置文件。但我觉得上面就够用了,而且spring cloud conf提供的方式过于繁多,且复杂,有需要去springcloud的官方详看
- 各种复杂的配置的结果最好还是以实测为主