Spring Cloud Config之配置集成化
在 Spring Cloud简介中,我们了解了Spring Cloud的基本概念、特点、各大组件和其作用,还介绍了Spring Cloud的版本定义和发布规则,对Spring Cloud应该有了一定的了解。在本篇,我们来看看实现配置集成化的重要组件----Spring Cloud Config。 1. 简介 Spring Cloud Config是一款配置集中管理的组件,它提供了分布式系统的客户端和服务端外部化配置支持,由git(也支持svn、本地文件系统等)存储库支持的集中式外部配置管理,实现了配置的外部化存储。 Spring Cloud Config有几个核心的概念: 配置仓库:集中存储配置文件的地方, 推荐git仓库,也可以使用svn仓库或者本地文件系统; Server:配置管理服务端,提供配置文件管理服务,通过server可以按照一定规则读取配置文件,它直接访问配置仓库; Client:配置客户端,即需要从Server读取配置的应用,它并不直接访问配置仓库,而是通过Server读取配置信息; git仓库本身使用频率高,可以进行版本跟踪等特点,所以spring推荐使用git仓库,本文也将重点介绍基于git仓库的配置中心。 2. 配置服务端 服务端支持的配置仓库有git、svn和native本地文件,spring.profiles.active配置项用于启用配置文件支持的配置仓库,默认为git。在使用git配置仓库有几个重要概念: application: 访问配置服务的名称,默认为application,可以通过spring.config.name配置 profile:激活的profile配置文件,多个以逗号分隔 label:通常为git的分支,默认为master,也可以为commit id、tag名称;如果分支或tag名称包含斜线“/”,那么在HTTP URL中需要更换为"(_)" 下边先简单介绍使用本地文件和本地git仓库搭建配置服务端。 2.1. 使用本地文件 1、新建config-server-native工程,引入依赖: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> 2、启动类加上@EnableConfigServer注解,表明该工程为配置服务端 3、新建本地配置仓库文件夹: ``mkdir /Users/sun/Desktop/belonk/config-native`` 在config-native文件夹中建三个文件:application-dev.properties,application-uat.properties,application-pro.properties,分别配置部分内容以区别不同环境(profile)。 4、application.properties添加如下配置: spring.profiles.active=native # 采用推荐的8888端口 server.port=8888 spring.config.name=config # 配置本地文件目录地址 spring.cloud.config.server.native.searchLocations=/Users/sun/Desktop/belonk/config-native spring.cloud.config.server.native.addLabelLocations=true # 配置本地git仓库地址 #spring.cloud.config.server.git.uri=file:///Users/sun/Desktop/belonk/config-center/ spring.profiles.active:默认为git,改为native启用本地文件系统配置仓库 spring.config.name:访问URL的application名称 spring.cloud.config.server.native.searchLocations:配置本地搜索配置文件的位置,默认包括[classpath:/, classpath:/config, file:./, file:./config] 5、启动应用,浏览器访问http://localhost:8888/config/pro,dev,可以看到显示了正确pro和dev的配置信息,需要注意的是这里的config来自spring.config.name配置。 由于本地文件系统没有版本控制,不便于管理和追述,建议仅仅用于测试,不建议生产上使用。 2.2. 使用本地git仓库 git仓库在本地文件系统,并未push到远端,可用于快速测试。我们在config-server-native工程上稍作修改,改为本地git仓库。 ...