Spring Cloud Config 统一配置中心,方便维护配置文件,对一些公司对数据库密码等敏感的信息,对普通开发人员不公开,放在运维人员手上,对配置做一个隔离做用,另外项目线上的配置改动都要从新启动项目,感受是有点繁琐的,为了解决以上问题及优化,下面来学习统一配置中心java
下面会使用到git仓库mysql
config server 端git
新建一个服务configspring
启动类上 加上eureka服务client注解,而且加上ConfigServer注解,套路都是同样的sql
以上都是一些操做了又操做的东西,应该都比较熟悉的了数据库
在配置yml文件以前,咱们须要先在git仓库上建一个项目,这边用码云作测试,建个项目,建立个文件应该都会,贴个图,json
建立一个configs.yml文件,建立文件的时候,注意把.yml后缀加上,我就漏了…bootstrap
在configs.yml中,加入以前order服务的yml配置浏览器
server: port: 8083 spring: application: name: order datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/beginner?useSSL=false&characterEncoding=utf-8 username: root password: 123456 jpa: show-sql: true eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ #此处为product服务使用 PRODUCT: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
git上面的内容放置好了,下面来配置config服务中yml文件,以下app
spring: application: name: config cloud: config: server: git: uri: https://gitee.com/daxia/spring-cloud-config username: daxia@foxmail.com password: 123456 basedir: E:\MyCloud\config\basedir ---会将git的配置拉去到此路径下,不要写成项目根路径 eureka: client: service-url: defaultZone: http://localhost:8761/eureka
上面的git配置须要注意的是,若是是开源中国的git的话,就按上面写,若是是gitlab、hub的话,后面要加上.git
启动config服务(eureka服务中心是一直开启的)
浏览器访问localhost:8080/configs-a.yml就能读取到git中的配合内容,很方便
configs-a.yml中-a是必须的,格式: /{服务名字}-{环境}.yml
下面要使用order服务作测试,因此这边要复制一分内容,新建一份order-dev.yml文件,内容与configs.yml一致
config client 端
相对于config服务,其余服务就是client端,这边拿order服务做为client
在order的maven中引入依赖,做为config的client
org.springframework.cloud spring-cloud-config-client
统一配置了order服务yml,那么order中的多余的配置就不须要了,修改yml配置,
先改application.yml文件的名字为bootstrap.yml,意思是启动时,先加载bootstrap文件再加载统一配置中心的配置文件,好比:数据源应用找不到就报错,内容以下:
spring: application: name: order cloud: config: discovery: enabled: true service-id: CONFIG profile: dev
而后启动项目, 注册中心就会发现服务:
再来浏览器访问如下 http://localhost:8000/order-dev.yml
能够访问到配置,说明成功了
若是设置的注册中心的端口不是默认的8761,须要将git仓库中order-dev.yml中注册中心的配置提到bootstrap.yml配置中
若是在git仓库中配置了order-dev.yml,order-pro.yml,order.yml,在启动服务的时候,读取的配置会被合并,好比启用order-dev的时候,会同时读取order,这时候order做为一个公共的存在; 有这样的处理,就能够想象一下,配置一个公共yml,其他的子yml的形式,用的很差,会引发一些尴尬的问题,须要注意
学习了统一配置中心,可是修改配置仍是须要重启,下节学习结合SpringCloud Bus集合MQ实现自动刷新
------------------------------------------------------------