节二:配置中心得基本应用-congfig
这次写得内容是接着上次写得:上次写到把gitee上面得配置读取到了本地里了。
一、访问下git上得配置信息得几种地址栏得方式
1:以properties格式得去访问
2:以json得格式得去访问
3:以yml得格式得去访问
注意:那么为什么要在地址栏上加一个a呢?如果加json也能一样的去识别,随便加可以随便识别的,但是一旦不加就会报错。
如果是这样访问的话可以是可以,但是访问的是空。
在码云上的取名的规则:/{label}/{name}-{profiles}.yml,这个name:代表的也就是服务名称,这个profile代表的是环境。上面没有环境,所以就是默认的环境,就是说可以随便写这个label就是在git上的分支结构名称现在是master主分支,也可以新建分支,比如beta/release分支。name-profiles:组合起来就是文件名。/{name}-{profiles}.yml如果找不到profiles的文件,就去找对应的name的文件。所以说这样访问也是可以的:
比如在开发中有开发环境:新建一个文件:
4:再次访问
这就非常方便的去管理他们。
二、在客户端如何去用呢(所有使用配置服务的就是配置的客户端)
1:加入一个依赖就可以了
2 :这些的东西就不需要了,因为是从git上面读了
3:加一个profiles: dev
这样就可以匹配provider为服务名称,dev代表文件的名字。如果没有profiles的话就不需要配置直接配置一个provider就可以了。profiles默认的是default。如果公司的项目放到上面的话,可以去加密保证安全。如果有文件夹的话,会在配置中心里面去配置。
三、如何去判断读取我们的dev的配置文件呢?
1:写一个ConfigController:想要去返回label的值
2:配置zk的服务发现:去拉取数据,因为我是把cloud-config这个服务部署到了zk上面去了
3:去运行cloud-provider
发现报了个错误注入的label的值不存在,也就是说没有把git上配置没给拉下来。
因为:在主类在运行的时候,就是在run之前,它会初始化我们的application.yml文件里面的所有的配置信息给它组合起来。在自动装配数据源的情况下会出现一个问题,因为还没有加载配置文件的的时候就开始找这个配置信息是找不到的。
想个办法:现在就是让application.yml在自动装配之前去加载:
在我们整个SpringBoot当中有个配置文件就是在这些配置文件还没有初始化的时候,它就会把这些配置文件给读取:叫做根加载配置文件:bootstrap,名字是固定的,优先级是最高的。就是run的时候,自动装配还没有执行的时候,它就会把这个文件给解析出来。这个文件就是自动装配之前,已经把文件里的内容初始化完成。
4:把application.yml文件名改为bootstrap.yml文件名,再次重启cloud-provider
这就从config模块中的zookeeper上拉取数据了。相应的数据也能拿到:
在项目中就是这么去使用,统一的配置中心。
下次讲配置中心得高可用
欢迎各位小伙伴来评价,想要工程代码的加群:797853299