详解SpringCloud mysql实现配置中心
作者:雨点的名字 发布时间:2023-11-02 05:12:57
mysql实现配置中心
本公司配置数据的管理是通过mysql进行配置管理,因为已经搭建好了,所以自己动手重新搭建一遍,熟悉整个流程。有关项目源码后期会补上github地址
微服务要实现集中管理微服务配置、 不同环境不同配置 、 运行期间也可动态调整 、 配置修改后可以自动更新的需求 ,Spring Cloud Config同时满足了以上要求。
一、项目搭建
本次主要用三个微服务
(1)Eureka-server: 7001 注册中心
(2)config-server : 5001 配置中心
(3)product-server : 8001 商品微服务
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数据
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 进入断点。
来源:http://www.cnblogs.com/qdhxhz/p/9624386.html


猜你喜欢
- 本文实例为大家分享了Android点击缩略图放大效果的具体代码,供大家参考,具体内容如下import android.animation.A
- 一:JTextField的(文本框)使用:JTextField 是一个轻量级组件,它允许编辑单行文本。1.JTextField的常用构造方法
- 什么是Java NIO?同步非阻塞io模式,拿烧开水来说,NIO的做法是叫一个线程不断的轮询每个水壶的状态,看看是否有水壶的状态发生了改变,
- Struts2 * Struts2 * 的概念和Spring Mvc * 一样。1.Struts2 * 是在访问某个Action或Actio
- Android Studio生成的APP默认图标是经典的机器人图标。可以通过Android Studio实现APP图标和名称的修改。1 修改
- 最近在做一个每天定点从FTP自动下载节目.xml并更新到数据库的功能。首先想到用 FileSystemWatcher来监控下载到某个目录中的
- 基础铺垫在java中,关于json的lib有很多,比如jackjson、fastjson、gson等等,本人都用过,但是对于我等只需要让ja
- 本文实例为大家分享了Android自定义带圆点的半圆形进度条,供大家参考,具体内容如下仅限用于半圆形,如须要带圆点的圆形进度条,圆点会出现错
- 一、jaxb是什么 JAXB是Java Architecture for XML Bindi
- 类的初始化顺序在Java中,类里面可能包含:静态变量,静态初始化块,成员变量,初始化块,构造函数。在类之间可能存在着继承关系,那么当我们实例
- 运行在TCP之上常见的网络应用协议有比如HTTP、FTP、SMTP、POP3、IMAP。TCP是TCP/IP体系中最重要的传输协议,它提供全
- 这篇文章主要介绍了Java实现inputstream流的复制代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
- 一、前言(吐槽+煽情+简介) &n
- Ribbon 介绍Ribbon 是 Netflix 提供的一个基于 Http 和 TCP 的客户端负载均衡工具,且已集成在 Eureka 依
- redissonredisson 实现分布式锁的机制如下:依赖版本implementation 'org.redisson:redi
- FileOutPutStream:子类,写出数据的通道步骤:1.获取目标文件2.创建通道(如果原来没有目标文件,则会自动创建一个)3.写入数
- 概述递归:指在当前方法内调用自己的这种现象。递归的分类:递归分为两种,直接递归和间接递归。直接递归称为方法自身调用自己。间接递归可以A方法调
- java联调生成测试数据工具类在日常的联调中,我们经常需要准备一定数量的测试数据,用来配合前端测试。当然对于简单的数据类型完全可以通过 JD
- 前言研究表明,Java堆中对象占据最大比重的就是字符串对象,所以弄清楚字符串知识很重要,本文主要重点聊聊字符串常量池。Java中的字符串常量
- 写在前面在前后端交互过程中,为了保证信息安全,我们往往需要加点用户验证。本文介绍了用springboot简单整合token。springbo