spring cloud config
项目环境
1、IDE:idea ,maven
2、操作系统:win10
3、jdk:1.8
4、springboot 2.1.6.RELEASE ,springcloud Greenwich.SR1
介绍
Spring Cloud Config 是 Spring Cloud 微服务体系中的中配置中心,是微服务中不可或缺的一部分,其能够很好地将程序中配置日益增多的各种功能的开关、参数的配置、服务器的地址,配置修改后实时生效,灰度发布,分环境、分集群管理配置等进行全面的集中化管理,有利于系统的配置管理和维护。
在互联网时代,应用都是分布式系统,部署在 N 台服务器上,想要去线上一台台地重启机器肯定不靠谱,并且维护成本也很高,所以配置中心应运而生。配置中心被用作集中管理不同环境( Dev 、 Test 、 Stage 、 Prod )和不同集群配置,以及在修改配置后将实时动态推送到应用上进行刷新。
创建git仓库
springcloud config 要配合git使用,所以首先要创建一个git仓库
登录GitHub,右上角有个New repository
1、 新建仓库
2、输入仓库名
3、根据GitHub提示提交本地代码
提示:2021.8.13之后GitHub 的操作都是以token的形式for-git-operations
token的获取在Settings /Developer settings/Personal access tokens/ Generate new token
拉取代码要以token形式https://your_token@github.com/ArronSun/micro-services-config.git
我的配置的GitHub地址是https://github.com/ArronSun/micro-services-config.git,在micro-services-config仓库下提交配置文件,
我的配置文件是放到了config文件夹下
application-dev.properties
site.sunlong.profile=dev
config server
1、创建springboot 基础项目,cloud-config-server,依赖如下
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> </dependencies>
2、启动类加上EnableConfigServer注解
@EnableConfigServer @SpringBootApplication public class CloudConfigServerApplication { public static void main(String[] args) { SpringApplication.run(CloudConfigServerApplication.class, args); } }
3、配置文件 application.properties
server.port=8101 spring.application.name=cloud-config-server spring.cloud.config.server.git.uri=https://github.com/ArronSun/micro-services-config.git spring.cloud.config.server.git.username=ArronSun #GitHub token spring.cloud.config.server.git.password=ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxx # 仓库路径下相对搜索位置,可以配置多个 spring.cloud.config.server.git.search-paths=config # 连接git 超时时间 spring.cloud.config.server.git.timeout=30
启动CloudConfigServerApplication,访问http://localhost:8101/app/dev/master
// 20211203151258 // http://localhost:8101/app/dev/master { "name": "app", "profiles": [ "dev" ], "label": "master", "version": "71c8e92b2e39bb35b5a1d2d21f1187f8c714ca9f", "state": null, "propertySources": [ { "name": "https://ghp_xxxxxxxxxxxxxxxxxxxxxxx@github.com/ArronSun/micro-services-config.git/config/application-dev.properties", "source": { "site.sunlong.profile": "dev" } } ] }
访问成功后,idea控制台会输出以下内容
2021-12-03 15:16:35.023 INFO 48824 --- [nio-8101-exec-7] o.s.c.c.s.e.NativeEnvironmentRepository : Adding property source: file:/C:/Users/ADMINI~1/AppData/Local/Temp/config-repo-3471101335122200905/config/application-dev.properties
官方给的配置信息和url之间的映射关系:官方地址
/{application}/{profile}[/{label}] /{application}-{profile}.yml /{label}/{application}-{profile}.yml /{application}-{profile}.properties /{label}/{application}-{profile}.properties
字段解释:
{application}代表应用名
{profile}对应激活的环境,例如:prod、dev、test等
{label}代表git分支名,如果不写默认是master
如果git的配置文件只有一个,应用名是application,这种情况下URL连接中的应用名只要不为空输入任意字符都能访问到这个唯一的配置文件。这种情况只限于应用名是application切只有一个文件。例如:访问http://localhost:8101/configServer/dev/ 也能成功访问
// 20211203185614 // http://localhost:8101/configServer/dev/ { "name": "configServer", "profiles": [ "dev" ], "label": null, "version": "71c8e92b2e39bb35b5a1d2d21f1187f8c714ca9f", "state": null, "propertySources": [ { "name": "https://ghp_xxxxxxxxx@github.com/ArronSun/micro-services-config.git/config/application-dev.properties", "source": { "site.sunlong.profile": "dev" } } ] }
至此springcloud config server简单使用就算完成了
config client
新建一个cloud-config-client用于读取GitHub上配置文件
1、创建一个cloud-config-client springboot项目,依赖如下
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
2、配置文件
application.properties
server.port=8201 spring.application.name=cloud-config-client
bootstrap.properties
#bootstrap.properties 会优先于application.properties加载, # 分支 spring.cloud.config.label=master # cloud server 地址 spring.cloud.config.uri=http://localhost:8101 # 要请求那个名称的的远程文件,多个用逗号分隔. 和下面的profile连接,就会访问application-dev.properties spring.cloud.config.name=application # profile spring.cloud.config.profile=dev
application.properties:对应的是用户级的资源配置项
bootstrap.properties:对应的是系统级的资源配置,其优先级更高
3、测试使用
新建一个ConfigInfoProperties.java,对应着GitHub的配置文件
@Configuration @ConfigurationProperties(prefix = "site.sunlong") public class ConfigInfoProperties { private String profile; public String getProfile() { return profile; } public void setProfile(String profile) { this.profile = profile; } }
新建一个ConfigClientController类用于测试
@RequestMapping("configClient") @RestController public class ConfigClientController { @Autowired private ConfigInfoProperties configInfoProperties; @GetMapping("config") public String getConfig(){ return configInfoProperties.getProfile(); } }
启动CloudConfigClientApplication,访问http://localhost:8201/configClient/config
至此,一个简单的sprigcloud config client就完成了。