SpringCloud(9)----mysql实现配置中心

摘要:
本公司配置数据的管理是通过mysql进行配置管理,因为已经搭建好了,所以自己动手重新搭建一遍,熟悉整个流程。有关项目源码后期会补上github地址微服务要实现集中管理微服务配置、不同环境不同配置、运行期间也可动态调整、配置修改后可以自动更新的需求,SpringCloudConfig同时满足了以上要求。可以看之前写的博客:SpringCloud---Eureka服务注册与发现2、配置中心微服务1、pom.xmlorg.springframework.cloudspring-cloud-starter-netflix-eureka-client˂!

本公司配置数据的管理是通过mysql进行配置管理,因为已经搭建好了,所以自己动手重新搭建一遍,熟悉整个流程。有关项目源码后期会补上github地址

微服务要实现集中管理微服务配置、不同环境不同配置、运行期间也可动态调整、配置修改后可以自动更新的需求,Spring Cloud Config同时满足了以上要求。

项目代码GitHub地址https://github.com/yudiandemingzi/spring-cloud-study

一、项目搭建

本次主要用三个微服务

(1)Eureka-server: 7001 注册中心

(2)config-server : 5001 配置中心

(3)product-server : 8001 商品微服务

SpringCloud(9)----mysql实现配置中心第1张

1、Eureka-server注册中心

注册中心很简单,这里不在重复些,注册中心没有变化。可以看之前写的博客 : SpringCloud(3)---Eureka服务注册与发现

2、配置中心微服务

1、pom.xml

复制代码
<!--服务中心jar包-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--配置中心jar包-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<!--连接msql数据库相关jar包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
复制代码

2、application.yml

复制代码
#服务名称
 server:
   port: 5001
#连接配置信息
 spring:
   application:
     name: config-server-jdbc
   profiles:
     active: jdbc
   cloud:
     config:
       server:
         default-label: dev
         jdbc:
           sql: SELECT akey , avalue FROM config_server where APPLICATION=? and APROFILE=? and LABEL=?
 #####################################################################################################
 # mysql 属性配置
   datasource:
     driver-class-name: com.mysql.jdbc.Driver
     url: jdbc:mysql://127.0.0.1:3306/test
     username: root
     password: root
 #####################################################################################################
#指定注册中心地址
 eureka:
   client:
     serviceUrl:
       defaultZone: http://localhost:7001/eureka/
复制代码

这里主要讲下连接配置信息

(1)spring.profiles.active=jdbc,自动实现JdbcEnvironmentRepository。

(2)sql语句自定义,否则会默认为“SELECT KEY, VALUE from PROPERTIES where APPLICATION=? and PROFILE=? and LABEL=?”,具体可以参考JdbcEnvironmentRepository实现。

(3)本人数据库建表为config_server,由于key,value和profile是mysql关键字,所以我都在最前面加了a。当然表名字段名都可以自定义。

(4){application}对应客户端的"spring.application.name"属性;

{aprofile}对应客户端的 "spring.profiles.active"属性(逗号分隔的列表); 和

{label}对应服务端属性,这个属性能标示一组配置文件的版本.

(5)只要select出来是两个字段,框架会自动包装到environment的map<key,value>。

3、mysql数据

SpringCloud(9)----mysql实现配置中心第6张

4、springboot启动类

添加@EnableConfigServer注解

复制代码
@SpringBootApplication
@EnableConfigServer
public class ConfigserverApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigserverApplication.class, args);
    }
}
复制代码

3、product-service微服务

1、pom.xml

复制代码
        <!--服务中心jar-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!--配置中心客户端jar-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-client</artifactId>
复制代码

2、bootstrap.yml

复制代码
#指定注册中心地址
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:7001/eureka/
#服务的名称
spring:
  application:
    name: product-service
  #指定从哪个配置中心读取
  cloud:
    config:
      discovery:
        service-id: config-server-jdbc
        enabled: true
      profile: dev
      label: dev
server:
  port: 8001
复制代码

这里为什么用bootstrap.yml而不用application.yml,是因为若application.yml 和bootStrap.yml 在同一目录下,

则bootStrap.yml 的加载顺序要高于application.yml,即bootStrap.yml 会优先被加载。

为何需要把 config server 的信息放在 bootstrap.yml 里?

当使用 Spring Cloud 的时候,配置信息一般是从 config server 加载的,为了取得配置信息(比如密码等),你需要一些提早的或引导配置。

因此,把 config server 信息放在 bootstrap.yml,用来加载真正需要的配置信息。

3、ConfigController类(测试用)

复制代码
@RestController
@RequestMapping("/api/v1/product")
public class ConfigController {
    @Value("${item_url}")
    private String url;
    /**
     * 输出url
     */
    @RequestMapping("url")
    public void list(){
        System.out.println(url);
    }
复制代码

4、测试

通过访问:http://localhost:8001/api/v1/product/url 进入断点。

SpringCloud(9)----mysql实现配置中心第15张

我只是偶尔安静下来,对过去的种种思忖一番。那些曾经的旧时光里即便有过天真愚钝,也不值得谴责。毕竟,往后的日子,还很长。不断鼓励自己,

天一亮,又是崭新的起点,又是未知的征程(上校11)

转载至:https://www.cnblogs.com/qdhxhz/p/9624386.html

免责声明:文章转载自《SpringCloud(9)----mysql实现配置中心》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SQL Server 删除默认值面试准备下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Net Core SqlSuger Sql sever 迁移 Mysql

Mysql 安装 对该码农界的左登峰教程扩展第五步:密码位置截图 文件格式报错:wyx100 第六步:mysqld --install [服务名] ###(我觉得有必要起个好记的服务名)需要以管理员身份运行cmd Navicat15 安装 茶油树:破解教程 Navicat15 导入sql sever数据 一曲长歌,一...

mysql优化二之锁机制

mysql优化二之锁机制 mysql提供了锁机制和MVCC机制来保证并发操作的安全性,这里主要讨论锁机制, MVCC见下篇文章 mysql的锁按照锁粒度可分为行锁与表锁,按照操作类型划分可读锁和写锁 InnoDB存储引擎支持表锁和行锁,默认锁为行锁,MyIsam只支持表锁 锁粒度越高则并发性越好 表锁 一、操作语法 1、 show open tables;...

mysql与oracle的语法对比

数据类型 编号 ORACLE MYSQL 注释 1 NUMBER int / DECIMAL DECIMAL就是NUMBER(10,2)这样的结构INT就是是NUMBER(10),表示整型;MYSQL有很多类int型,tinyint mediumint bigint等,不同的int宽度不一样 2 Varchar2(n) va...

配置mysql

1.如果本地连接mysql -uroot -p 报出Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'的错误,原因是,/var/lib/mysql 的访问权限问题。运行命令chown -R mysql:mysql /var/lib/mysql可解决,m...

Android : android 8.0 audio 接口分析

1、HIDL 的概念   HIDL 读作 hide-l,全称是 Hardware Interface Definition Language。它在 Android Project Treble 中被起草,在 Android 8.0 中被全面使用,其诞生目的是使 Android 可以在不重新编译 HAL 的情况下对 Framework 进行 OTA 升级。 ...

SQL 03

********************2017年8月10日******************** 安装mysql Typical :典型安装Custom :自定义安装Complete:完全安装 简单认知mysql默认端口号是:3306mysql的超级用户叫:root 在cmd中启动mysql服务:net start mysql在cmd中登录mysq...