SpringCloud Config连接git与数据库流程分析讲解

目录
  • 1、什么是Spring Cloud Config
  • 2、EnvironmentRepository抽象
  • 3、实战-使用git作为配置源
    • 1、搭建config server
    • 2、搭建config client
    • 3、config server HTTP接口
  • 4、实战-使用数据库作为配置源
  • 5、实战-复合配置源

1、什么是Spring Cloud Config

Spring Cloud Config为微服务架构提供了配置管理的功能,通过Spring Cloud Config服务端提供配置中心,在各个微服务应用的客户端读取来自服务端配置中心的配置项,配置中心的数据源可以来自git、svn、数据库、操作系统的本地文件、jar包中的文件、vault、组合。

Spring Cloud Config = 微服务配置中心。

2、EnvironmentRepository抽象

EnvironmentRepository接口的实现可提供不同的配置源,主要实现如下:

  • CompositeEnvironmentRepository:复合,如git+数据库
  • JGitEnvironmentRepository:git
  • JdbcEnvironmentRepository:数据库

接口EnvironmentRepository只提供了一个方法findOne,通过传入application、profile和label来获得配置项。

application:应用名,可通过spring.application.name配置

profile:激活的配置文件,可通过spring.profiles.active配置

label:没有特定的含义,可以当做git的分支名或版本号来用

3、实战-使用git作为配置源

1、搭建config server

在IDEA中创建一个作为config server的Maven项目,pom.xml中引入如下依赖。

<properties>
    <spring-cloud.version>Hoxton.SR4</spring-cloud.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-server</artifactId>
    </dependency>
</dependencies>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

在src/main/resources/bootstrap.yml中添加如下配置:

spring:
  cloud:
    config:
      server:
        git:
          uri: 你的git仓库uri
          default-label: master
          search-paths: '{application}' # 搜索的目录
server:
  servlet:
    context-path: /mall_config
  port: 20190
debug: true

注意:

这里使用了git作为配置源,需要填写你的git仓库uri,如果是私有仓库还需要配置username和password选项。

{application}是占位符,会被动态替换为config client的application name

在Spring Boot启动类打上@EnableConfigServer注解,最后启动项目,config server就运行起来了。

完整项目结构图如下所示。

2、搭建config client

在IDEA中创建一个作为config client的Maven项目,pom.xml中引入如下依赖。

<properties>
    <spring-cloud.version>Hoxton.SR4</spring-cloud.version>
</properties>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

在src/main/resources/bootstrap.yml中添加如下配置:

spring:
  application:
    name: mall-eureka
  cloud:
    config:
      uri: http://localhost:20190/mall_config
      name: mall-eureka
      profile: dev
      label: master
debug: true

注意:

在config client的bootstrap.yml中会放一些连接config server的配置,而其它的配置就可以放到git上了

git仓库文件结构如下所示:

\---mall-eureka
        mall-eureka-dev.yml

完整项目结构图如下所示。

3、config server HTTP接口

config server提供了如下的HTTP接口,可以直接在浏览器上 访问URL看到配置。

/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties

比如这样的一个URL:http://localhost:20190/mall_config/master/mall-eureka-dev.yml

4、实战-使用数据库作为配置源

首先准备一张数据库表:

CREATE TABLE properties (
  id int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '物理主键',
  application varchar(255) COMMENT 'application',
  `profile` varchar(255) COMMENT 'profile',
  label varchar(255) COMMENT 'label',
  `key` varchar(255) COMMENT 'key',
  `value` varchar(255) COMMENT 'value',
  `desc` varchar(255) COMMENT '描述',
  create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  modify_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='spring cloud config jdbc配置源';

其中表名必须叫properties,且表中必须要有application、profile、label、key、value这几个字段,官方规定的。

由于使用数据库配置源,因此要连接数据库,在config server的pom.xml中还要引入以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

使用如下的src/main/resources/bootstrap.yml配置:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/tudou_mall_admin?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password: ok
  cloud:
    config:
      server:
        jdbc:
          sql: SELECT `KEY`, `VALUE` from `PROPERTIES` where `APPLICATION`=? and `PROFILE`=? and `LABEL`=?
server:
  servlet:
    context-path: /mall_config
  port: 20190
debug: true

可以看到,spring.cloud.config.server.git配置项变成了spring.cloud.config.server.jdbc,另外多个数据源的配置。

5、实战-复合配置源

如果我想使用git和数据库作为双重作为配置源,可能是多个git和多个数据库,该怎么办呢?

有两种方式:

利用composite,会使用全部的配置源,优先级按列出的顺序,最顶上的优先级最高

利用spring.profiles.active激活多个配置,可动态选择使用全部配置源中的一部分,可以使用order配置项进行排序

方式1配置如下:

spring:
  profiles:
    active: composite
  cloud:
    config:
      server:
        composite:
        -
          type: git
          uri: https://gitee.com/bobostudy/com.tudou.mall.config.git
          default-label: master
          search-paths: '{application}' # 搜索的目录
        -
          type: jdbc
          sql: SELECT `KEY`, `VALUE` from `PROPERTIES` where `APPLICATION`=? and `PROFILE`=? and `LABEL`=?

方式2配置如下:

spring:
  profiles:
    active: git,jdbc
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/bobostudy/com.tudou.mall.config.git
          default-label: master
          search-paths: '{application}' # 搜索的目录
          order: 0
        jdbc:
          sql: SELECT `KEY`, `VALUE` from `PROPERTIES` where `APPLICATION`=? and `PROFILE`=? and `LABEL`=?
          order: 1

到此这篇关于SpringCloud Config连接git与数据库流程分析讲解的文章就介绍到这了,更多相关SpringCloud Config连接git内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 解决SpringCloud Config结合github无法读取配置的问题

    前言 配置中心存放文件在github是读取过程,可能你会出现读取不到配置信息.本次笔者将这一过程进行详细介绍. 准备 父工程 由于笔者是使用聚合工程,所以这次也是把相关的工程创建说明写上.当然你也可以完全创建两个独立的工程来引用. 创建父工程时直接只有一个pom文件,以下是这个文件的依赖信息 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache

  • Spring连接Mysql数据库全过程

    目录 Spring连接Mysql数据库 创建一个Maven项目 导入坐标 托管DataSource类 测试 Spring和Mysql数据库的连接及测试--Jdbc 创建Maven Web 的java工程 Spring连接Mysql数据库 创建一个Maven项目 导入坐标 在pom.xml加入如下坐标,并且点击右上角刷新. import org.springframework.context.annotation.Bean; import org.springframework.context.a

  • Spring事务管理中关于数据库连接池详解

    目录 Spring事务管理 环境搭建 标准配置 声明式事务 总结 SqlSessionFactory XML中构建SqlSessionFactory 获得SqlSession的实例 代码实现 作用域(Scope)和生命周期 SqlSessionFactoryBuilder(构造器) SqlSessionFactory(工厂) SqlSession(会话) Spring事务管理 事务(Transaction),一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序

  • Spring数据库连接池实现原理深入刨析

    目录 Spring事务管理 环境搭建 标准配置 声明式事务 总结 SqlSessionFactory XML中构建SqlSessionFactory 获得SqlSession的实例 代码实现 作用域(Scope)和生命周期 SqlSessionFactoryBuilder(构造器) SqlSessionFactory(工厂) SqlSession(会话) Spring事务管理 事务(Transaction),一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序

  • SpringCloud Config连接git与数据库流程分析讲解

    目录 1.什么是Spring Cloud Config 2.EnvironmentRepository抽象 3.实战-使用git作为配置源 1.搭建config server 2.搭建config client 3.config server HTTP接口 4.实战-使用数据库作为配置源 5.实战-复合配置源 1.什么是Spring Cloud Config Spring Cloud Config为微服务架构提供了配置管理的功能,通过Spring Cloud Config服务端提供配置中心,在各

  • Python创建SQL数据库流程逐步讲解

    目录 前言 先决条件 创建脚本 建立连接 创建表格 生成一些随机数据 结论 前言 根据<2021年Stackoverflow开发者调查>, SQL是最常用的五种编程语言之一. 所以,我们应该多投入时间来学习SQL. 由Storyset绘制的人物插图 但是有一个问题: 如何在没有数据库的情况下练习数据库查询呢? 在今天的文章中,让我们一起来解决这个基本问题,学习如何从零开始创建自己的MySQL数据库.在Python和一些外部库的帮助下,我们将创建一个简单的脚本,可以自动创建并使用随机生成的数据,

  • C#连接SQL Server数据库的实例讲解

    C#连接数据库:Connection对象 1.Connection对象概述 Connection对象是一个连接对象,主要功能是建立与物理数据库的连接.其主要包括4种访问数据库的对象类,也可称为数据提供程序,分别介绍如下. SQL Server数据提供程序,位于System.Data.SqlClient命名空间. ODBC数据提供程序,位于System.Data.Odbc命名空间. OLEDB数据提供程序,位于System.Data.OleDb命名空间. Oracle数据提供程序,位于System

  • MongoDB连接和创建数据库的方法讲解

    一.连接MongoDB 在连接MongoDB前确保启动MongoDB服务,只需要在MongoDB安装目录的bin目录下执行mongo.exe即可. 执行启动操作后,mongodb在输出一些必要信息后不会输出任何信息,之后就等待连接的建立,当连接被建立后,就会开始打印日志信息. 标准URL连接语法: mongodb:// 这是固定的格式,必须要指定.username:password@ 可选项,如果设置,在连接数据库服务器之后,驱动都会尝试登陆这个数据库host1 必须的指定至少一个host, h

  • jdbc连接sql server数据库问题分析

    SQL Server连接中问题还真多.不进行设置还真连接不上,这里小记一下!(部分资料来源于互联网) JDBC连接MySQL出现的问题 (例子里面自带JDBC2005的驱动,在lib文件夹下,右键点击Build Path--->add to build build path 即可) 运行connectionSqlServer2005包下的JavaConnectionSQL类即可! 1. 驱动问题: JDBC2005与JDBC2008一定要对号入座,否则会报错!(本人用的是2008) 2. 服务启

  • springCloud config本地配置操作

    一般很多项目不是在springcloud的环境中使用的,但是需要用到分布式配置中心来管理一些外部或者项目的配置,这个时候我们可以使用springcloud-config的本地配置. 配置config-server服务端 使用start.spring.io创建一个springcloud工程,pom中引入: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-c

  • SpringCloud Config统一配置中心问题分析解决与客户端动态刷新实现

    目录 一.问题分析及解决方案 1.问题分析 2.解决方案 二.手动刷新 1.添加服务监控 2.暴露服务端点 3.刷新业务类controller 4.手动刷新 三.自动刷新 什么是总线 基本原理 一.问题分析及解决方案 1.问题分析 上一章我们讲过远程仓储统一管理配置信息,客户端可以通过统一配置服务中心 config server 服务端获取配置信息.现在我们来做一个改变,并进行分析. 首先启动注册中心.统一配置中心configserver服务端.订单服务.浏览器访问地址:http://local

  • springcloud config配置读取优先级过程详解

    情景描述 最近在修复Eureka的静态页面加载不出的缺陷时,最终发现是远程GIT仓库将静态资源访问方式配置给禁用了(spring.resources.add-mappings=false).虽然最后直接修改远程GIT仓库的此配置项给解决了(spring.resources.add-mappings=true),但是从中牵涉出的配置读取优先级我们必须好好的再回顾下 springcloud config读取仓库配置 通过config client模块来读取远程的仓库配置,只需要在boostrap.p

  • SpringCloud Config使用本地仓库及map注入

    默认情况下,SpringCloud Config使用的是远程的仓库,所以默认要配置uri 如果不想使用远程仓库,而使用本地仓库,需要做以下配置: spring.profiles.active=native spring.cloud.config.server.native.search-locations=file:D:/git/myconfig 注意3点: 1. 使用spring.profiles.active指定要使用本地仓库,而不是其他属性.注意这个属性一般的作用是激活哪一套配置,在con

  • docker部署蜗牛影院系统详细流程分析

    环境声明 宿主机OS: Cetnos7.9 最小化安装 docker Version: 20.10.6 系统要求硬件配置: CPU2核以上,内存8G cpu核心数低于2核,影院端将无法登录 mysql数据库: mysql5.6 容器 redis数据库: redis4.0 容器 安装centos7.9 先停止防火墙和关闭SELinux 查看防火墙状态 firewall-cmd --state #或 systemctl status firewalld.service 停止firewall syst

随机推荐