(七)Alian 的 Spring Cloud Config 配置中心(客户端)
目录
- 一、背景
- 二、maven依赖
- 三、配置文件
- 四、验证
一、背景
通过上一篇文章,我们已经搭建了配置中心了,接下里我们继续改造我们的订单服务了,之前我们的订单服务的数据库配置还是写在配置文件中的,通过本文以后,就可以通过配置中心获取了,包括自定义配置也可以。我们已有的服务地址:
- 注册中心的地址是: http://10.130.3.222:8761/eureka
- 配置中心的地址是: http://10.130.3.222:6666
- 订单服务的地址是: http://10.130.3.88:7001
二、maven依赖
pom.xml
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--注册中心--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><!--配置中心--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency><!--订单实体,自动生成ebean querybean--><dependency><groupId>cn.alian.domain</groupId><artifactId>domain-order</artifactId><version>1.0.0-SNAPSHOT</version></dependency><!--自己写的db starter--><dependency><groupId>cn.alian.microservice</groupId><artifactId>common-db</artifactId><version>1.0.0-SNAPSHOT</version></dependency><!--mysql数据库连接--><dependency><groupId>com.googlecode.log4jdbc</groupId><artifactId>log4jdbc</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>
</dependencies>
相对于我们订单服务就是多了下面这个关键依赖
<!--配置中心-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency>
三、配置文件
application.properties配置文件中就什么都不配置了,也就是 之前的配置文件application.properties里的内容都可以注释或者删除 ,比如我们之前的配置是下面这样的:
#服务名
spring.application.name=order
#端口
server.port=7001
#eureka注册中心地址
eureka.client.serviceUrl.defaultZone=http://10.130.3.222:8761/eureka#数据库配置
spring.datasource.driver-class-name=net.sf.log4jdbc.DriverSpy
spring.datasource.url=jdbc:log4jdbc:mysql://10.130.3.99:3306/order?autoReconnect=true&useSSL=false
spring.datasource.username=alian
spring.datasource.password=Alian1223
spring.datasource.hikari.connection-timeout=5000
spring.datasource.hikari.maximum-pool-size=10
新增配置文件 bootstrap.properties,内容如下,具体的可以查看我的注释
#应用名
spring.application.name=order
#开发环境
spring.profiles.active=dev
#配置标签(根据配置中心,本文全是采用master)
spring.cloud.config.label=master
#配置中心地址,多个用逗号分隔
spring.cloud.config.uri=http://10.130.3.222:6666
#设置为true时,如果服务无法连接到配置中心服务器,则服务启动失败
spring.cloud.config.fail-fast=true
#日志配置,通过配置中心获取
logging.config=${spring.cloud.config.uri}/logback/${spring.application.name}.xml
从配置文件的名称也能指定,bootstrap就有引导的意思,它要比application.properties先加载,像之前那些端口和数据配置就都从数据库里获取了。关于 spring.profiles.active 和 spring.cloud.config.label 的配置,我在上一篇文章里已经讲过了,大家可以了解下:(六)Alian 的 Spring Cloud Config 配置中心(服务端),同时呢我们这里配置了日志的获取方式为配置中心,因为我们配置中心提供了默认的日志格式,我们要开发的应用都可以使用。
#日志配置,通过配置中心获取
logging.config=${spring.cloud.config.uri}/logback/${spring.application.name}.xml
四、验证
我们写了一个接口通过我们的配置中心去获取我们的服务端口和网关地址。从我们上一篇文章初始化数据也知道,这些都配置在数据库了。
TestAppPropertiesController
package cn.alian.mall.order.controller;import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@Slf4j
@Validated
@RestController
@RequestMapping({"/test"})
public class TestAppPropertiesController {@Value("${app.gateway}")private String gateway;@Value("${server.port}")private String port;@GetMapping("/getPort")public String request() {log.info("收到请求");return "端口:【" + port + "】返回了网关地址:" + gateway;}}
我们启动服务,在 配置中心服务端 日志输出了如下结果(切面):
sourceName=order-dev, key=server.port, value=7001
sourceName=order-dev, key=spring.datasource.password, value=Alian1223
sourceName=order-dev, key=spring.datasource.platform, value=mysql
sourceName=order-dev, key=spring.datasource.url, value=jdbc:log4jdbc:mysql://10.130.3.99:3306/order?${jdbc.url.params}
sourceName=order-dev, key=spring.datasource.username, value=alian
sourceName=application-default, key=api-url-stock, value=http://10.130.3.222:8888/gateway/stock
sourceName=application-default, key=app.config-uri, value=http://10.130.3.222:6666
sourceName=application-default, key=app.gateway, value=http://10.130.3.222:8888/gateway
sourceName=application-default, key=app.graceful-shutdown-wait-seconds, value=0
sourceName=application-default, key=app.swagger.base.url, value=10.130.3.222:8888/gateway
sourceName=application-default, key=app.swagger.enabled, value=true
sourceName=application-default, key=eureka.client.serviceUrl.defaultZone, value=http://10.130.3.222:8761/eureka
sourceName=application-default, key=eureka.instance.instance-id, value=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}
sourceName=application-default, key=eureka.instance.lease-expiration-duration-in-seconds, value=90
sourceName=application-default, key=eureka.instance.lease-renewal-interval-in-seconds, value=30
sourceName=application-default, key=eureka.instance.metadataMap.contextPath, value=${server.servlet.context-path}
sourceName=application-default, key=eureka.instance.prefer-ip-address, value=true
sourceName=application-default, key=jdbc.url.params, value=characterEncoding=utf8&useUnicode=true&useSSL=false&zeroDateTimeBehavior=convertToNull&autoReconnect=true&allowMultiQueries=true&failOverReadOnly=false&connectTimeout=6000&maxReconnects=5
sourceName=application-default, key=management.endpoint.shutdown.enabled, value=true
sourceName=application-default, key=management.endpoints.web.exposure.include, value=*
sourceName=application-default, key=spring.cloud.config.override-none, value=true
sourceName=application-default, key=spring.datasource.driver-class-name, value=net.sf.log4jdbc.DriverSpy
sourceName=application-default, key=spring.jackson.date-format, value="yyyy-MM-dd HH:mm:ss"
sourceName=application-default, key=spring.main.allow-bean-definition-overriding, value=true
我们通过地址: http://10.130.3.88:7001/test/getPort 访问我们的订单服务得到如下结果:
端口:【7001】返回了网关地址:http://10.130.3.222:8888/gateway
从这个结果我们也知道,配置中心的 客户端 从 服务端 获取到了公共的配置( 网关地址 )和自己应用的配置( 端口 ),增加了配置的重用性和可拓展性。那么怎么动态刷新呢?这个问题我后面有时间再解答。
(七)Alian 的 Spring Cloud Config 配置中心(客户端)相关推荐
- (六)Alian 的 Spring Cloud Config 配置中心(服务端)
目录 一.简介 二.数据库 2.1.应用表 2.2.属性表 2.3.视图 2.4.初始化数据 三.配置 3.1.pom.xml 3.2.application.properties 3.3.主类 3. ...
- Spring Cloud Config 配置中心实践过程中,你需要了解这些细节!
本文导读: Spring Cloud Config 基本概念 Spring Cloud Config 客户端加载流程 Spring Cloud Config 基于消息总线配置 Spring Cloud ...
- Spring Cloud Config 配置中心
1.构建config-server 创建一个pom.xml <?xml version="1.0" encoding="UTF-8"?> <p ...
- Spring Cloud Config配置中心的使用
一.概述 1. 为什么使用? 1> 配置文件太多,不方便维护 2> 配置文件一般都保存这各种明文显示的密码,无法保证配置内容的安全性,也无法做到按权限分配给个人 3> 更新配置项目需 ...
- git在clone时需要输入密码Enter passphrase for key 导致spring cloud config 配置中心无法拉取配置文件的解决方法
前几天把系统从win7换到了win10 重装了开发环境 一直没什么问题 今天在调试spring cloud 时 发现无论如何都拉取不到配置文件, 通过微服务日志提示 Could not locate ...
- 【SpringCloud】Spring Cloud Config 配置中心
文章目录 1.概述 1.1 是什么 1.2 怎么玩 1.3 怎么用 3.案例 3.1 案例1 3.1.1 配置 3.1.2 主类 3.1.3 Git信息 3.1.4 访问 4. 例子 5.客户端 5. ...
- Spring Cloud Config配置中心使用(草稿版)
服务端搭建: cli:
- (十九)Alian 的 Spring Cloud Config 集群配置
目录 一.简介 1.1.第一步 二.maven依赖 三.配置 3.1.application.properties 3.2.主类 四.客户端修改(支付系统) 4.1 maven依赖 4.2 支付系统主 ...
- 玩转Spring Cloud之配置中心(config server config client)
玩转Spring Cloud之配置中心(config server &config client) 本文内容导航: 一.搭建配置服务中心(config server) 1.1.git方式 1 ...
最新文章
- 数组常用解题方法(持续更新)
- docker -v 覆盖了容器中的文件_10分钟让你理解 docker 容器中的 uid 和 gid
- CSP-S 2021 退役记
- Qt DLL总结-创建及调用QT的 DLL
- 直方图均衡化原理及c++代码
- 支付宝怎么提交html表单提交,uniapp H5 支付表单提交问题解决烦方案
- 大型项目用python吗_在大型项目上,Python 是个烂语言吗?
- Denise God Mode for mac(磁带饱和器音频插件)
- Unity 渲染管线总结
- 易用宝项目记录day7-权限与菜单
- BT656协议讲解与解码
- 黑盒测试 白盒测试 灰盒测试
- 计算机组成原理下列数中最小的数位,计算机组成原理试题(四)
- 【python】filetype根据内容推测文件类型
- nn.Flatten()函数详解及示例
- Ireport 导出pdf 特殊字体设置
- 数据中台建设(三):数据中台架构介绍
- 【高级UI】【026】手动为RecyclerView添加橡皮筋拉伸回弹效果
- 算法竞赛入门经典 习题6-14
- 计算机与linux操作系统的发展
热门文章
- 计算机组成原理实验四:常规性微程序控制器实验
- 出现频率高的流程图模板分享
- 从IT行业发展史看下一个风口在哪里?
- 申宝简述四类题材受青睐
- python 计算两个年份之间闰年的数量 判断某年份是否为闰年
- com.android.camera.action.crop uri,Android判断com.android.camera.action.CROP是否存在
- Druid未授权访问 漏洞复现
- 中国裁判文书全量明细数据
- 2012年敏捷个人俱乐部(北京)实践团开始报名了......
- springboot使用百度地图IP定位API进行定位