为什么使用配置中心
springcloud工程多个服务中会有重复的配置.这样我们可以将重复的配置提取出来放到一个同一的服务中,这个服务叫做配置中心.配置中心还方便统一的管理配置文件的版本,比如开发的时候统一使用dev后缀的配置文件.
创建配置中心服务
首先我们创建一个springcloud的服务,如前面几篇文章.然后再pom文件中添加配置中心需要jar包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
在启动类上添加注解,声明启动配置服务
@EnableConfigServer
最后在配置文件中添加如下配置:
server:
port: 8200
spring:
application:
name: cysoft-config
cloud:
config:
server:
git:
password: *****
username: ****
clone-on-start: true #启动时下载配置
uri: https://github.com/****/**** #github地址
searchPaths: ${spring.profiles.active} #控制使用仓库中哪个文件夹下面的配置文件
timeout: 10 #10秒连接超时
basedir: E:\User\springcloud\ #临时文件存储位置
default-label: ${spring.cloud.config.label}
accept-empty: false #找不到应用程序时,Server将返回HTTP 404状态
label: master
send-state: true
profiles:
active: dev
eureka:
instance:
appname: cysoft-config
这里将配置中心的服务配置的端口为8200,使用了git来存储我们的配置文件.当然还提供了其他的存储方案(本地存储,数据库存储,svn存储),springcloud默认的使用git进行存储.其他的方式只需要将git部分进行修改即可.
注意:
这里配置文件中spring.cloud.config.server.git.searchPaths属性是配置寻找要使用的配置文件在github仓库的路径
如searchPaths=dev 则路径如下图,是在仓库的根目录的dev下面,配置文件的名称以application开头,因为springboot就是加载以这个开头的配置文件.
使用配置中心的配置文件
配置中心我们搭建完成之后,实现在其他服务中使用配置中心的配置文件.
现在在我们想要使用的服务pom文件中添加
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
然后再服务中创建配置文件bootstrap.yml 因为此文件是程序启动时最先加载的配置文件,我们将读取配置中心的配置内容放在此文件中.内容如下:
spring:
cloud:
config:
discovery:
enabled: true
service-id: cysoft-config
profile: ${spring.profiles.active} #要使用的配置文件application-upload.yml
name: cysoft-config
label: master
profiles:
active: upload
此配置是使用了上面配置中心中的application-upload.yml文件 也就是dev中的application-upload.yml文件.,如果想使用多个文件,可以spring.profiles.active= upload,dev,test的形式添加引入其他文件