分布式配置中心客户端的作用是从github 或者 是 gitlab上加载配置 而不自己手动配置
在某个服务的pom.xml中加入spring-cloud-config客户端依赖(每个服务都可使用,这里以feign消费者为例)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
先给feign的application.yml 配置 cloud-config
feign服务的原始application.yml
spring:
application:
name: hello-spring-cloud-web-admin-feign
thymeleaf:
cache: false
mode: LEGACYHTML5
encoding: UTF-8
servlet:
content-type: text/html
cloud: //云配置
config:
uri: http://localhost:8888
name: web-admin-feign //对应gitlab仓库中master分支下的
web-admin-feign-dev.yml文件
label: master
profile: dev
server:
port: 8765
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
feign服务简化后的application.yml
spring:
cloud: //云配置
config:
uri: http://localhost:8888
name: web-admin-feign //对应gitlab仓库中master分支下的
web-admin-feign-dev.yml文件
label: master
profile: dev
因为配置文件全都托管在github或者gitlab平台上,所以只需加载到对应的配置文件,而无需在此文件中配置大多数信息
spring.cloud.config.uri
:配置服务中心的网址spring.cloud.config.name
:配置文件名称的前缀spring.cloud.config.label
:配置仓库的分支spring.cloud.config.profile
:配置文件的环境标识- dev:表示开发环境
- test:表示测试环境
- prod:表示生产环境
你们可能会问这里的feign服务在run入口类时能够加载到gitlab后者github上对应的配置文件?
从上面feign的application.yml中可以看出spring.cloud.config.uri 为 http://localhost:8888
而http://localhost:8888正是spring-cloud-config配置中心
那我们再来看看spring-cloud-config配置中心中的application.yml又配置了什么
spring-cloud-config模块(配置中心)
spring:
application:
name: hello-spring-cloud-config
cloud:
config:
label: master
server:
git:
uri: http://192.168.106.133/EinBlatt/spring-cloud-config.git
search-paths: respo
username: einblatt
password: einblatt
server:
port: 8888
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
这下明白了吧,每个服务通过spring.cloud.config.uri属性找到配置中心
配置文件的环境标识-springboot profile
而配置中心中配置了连接同一管理配置文件的github或者gitlab仓库的地址
所有的服务的配置文件可以托管在这(这就是配置文件在云上)
在feign服务的application.yml配置文件中又指定了配置文件名和Pprofile()
所以在不同的环境下可以加载到不同的配置文件
如果项目上线了直接将feign服务的applicaition.yml中的spring.cloud.config.profile改成prod
这时feign项目就会自动加载你配置的好的web-admin-feign-prod.yml 这样无需关注你feign服务的application.yml
的其他配置信息像eureka的url等等,只需更新github上或者gitlab上的配置文件,并且找到此对应的配置文件即可,是不
是就是云配置了
但其实这并非是真正的配置上云了,你想一般每个小的服务都会用maven打成jar包的形式运行(假如在windows上,先不说 linux),假如之前你是开发环境,用的配置文件是web-admin-feign-dev.yml,这时项目要上线了,然而你已经打包好了jar,
你这时又的去改改你项目的application.yml中的spring.cloud.config.profile为prod,再次打成jar然后再运行,是不是很
麻烦,那么如何解决这个问题呢,自古上有计策下有对策嘛
操作起来很简单,只需要为不同的环境编写专门的配置文件,如:web-admin-feign-dev.yml
、web-admin-feign-prod.yml
, 启动项目 时只需要增加一个命令参数 --spring.profiles.active=环境配置
即可,启动命令如下:在项目 mvn clean package后
这样运行项目
如果你是开发环境在cmd运行;
java -jar hello-spring-cloud-web-admin-feign-1.0.0-SNAPSHOT.jar --spring.profiles.active=dev
如果你是上线环境在cmd运行;
java -jar hello-spring-cloud-web-admin-feign-1.0.0-SNAPSHOT.jar --spring.profiles.active=prod