springcloud 入门(7) springcloud config配置中心(上)

简介: springcloud 入门(7) springcloud config配置中心

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、 新建仓库

image.png

2、输入仓库名

2.png

3、根据GitHub提示提交本地代码

image.png

提示: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文件夹下

image.png

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

image.png

至此,一个简单的sprigcloud config client就完成了。

目录
相关文章
|
2月前
|
算法 安全 Java
微服务(四)-config配置中心的配置加解密
微服务(四)-config配置中心的配置加解密
|
1月前
|
Dubbo Java 应用服务中间件
Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
尼恩团队的15大技术圣经,旨在帮助开发者系统化、体系化地掌握核心技术,提升技术实力,从而在面试和工作中脱颖而出。本文介绍了如何使用Dubbo3.0与Spring Cloud Gateway进行整合,解决传统Dubbo架构缺乏HTTP入口的问题,实现高性能的微服务网关。
|
2月前
|
负载均衡 Java Nacos
SpringCloud基础2——Nacos配置、Feign、Gateway
nacos配置管理、Feign远程调用、Gateway服务网关
SpringCloud基础2——Nacos配置、Feign、Gateway
|
1月前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
141 0
|
2月前
|
Java 开发工具 对象存储
简化配置管理:Spring Cloud Config与Netflix OSS中的动态配置解决方案
简化配置管理:Spring Cloud Config与Netflix OSS中的动态配置解决方案
46 2
|
2月前
|
JavaScript
Vue3基础(19)___vite.config.js中配置路径别名
本文介绍了如何在Vue 3的Vite配置文件`vite.config.js`中设置路径别名,以及如何在页面中使用这些别名导入模块。
87 0
Vue3基础(19)___vite.config.js中配置路径别名
|
3月前
|
移动开发 JavaScript 前端开发
UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)
这篇文章介绍了在UniApp H5项目中处理跨域问题的两种方法:通过修改manifest.json文件配置h5设置,或在项目根目录创建vue.config.js文件进行代理配置,并提供了具体的配置代码示例。
UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)
|
1月前
|
前端开发 JavaScript
vite vue3 config配置
【10月更文挑战第5天】
55 0
|
1月前
|
负载均衡 Java API
【Spring Cloud生态】Spring Cloud Gateway基本配置
【Spring Cloud生态】Spring Cloud Gateway基本配置
37 0
|
3月前
|
Java 微服务 Spring
Spring Cloud全解析:配置中心之解决configserver单点问题
但是如果该configserver挂掉了,那就无法获取最新的配置了,微服务就出现了configserver的单点问题,那么如何避免configserver单点呢?