之前的一个个零碎的组件,如果一步步来的话,可能已经发现问题了----没有集中配置jar包版本。
同理,是不是还缺一个集中文件配置?所以这章来使用config-server来集中管理所有组件配置。
配置方式主要有两种:
1. 配置在服务(或本地)中
2. 配置在 git/svn 中(本章以git为例)
一、配置在本地中
1.1 创建config-server服务
1.2 修改配置文件
spring.application.name=config-server
# 应用服务 WEB 访问端口
server.port=8888
#eureka注册服务地址
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
#取本地配置(默认从resources文件下读取配置文件)
spring.profiles.active=native
#读取指定文件
#spring.cloud.config.server.native.search-locations=classpath:/
1.3 在启动类上添加两个注解
@EnableEurekaClient
@EnableConfigServer
package com.example.configserver;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
1.4 创建两个公共配置文件 common-tset.properties、common-dev.properties 并添加配置信息
message = test
message = dev
1.5 修改eureka-client 服务(用来调用config-server的配置信息)
1.5.1 在eureka-client服务的pom文件中添加调用config-server的依赖jar包
org.springframework.cloud
spring-cloud-config-client
1.5.2 在eureka-client服务中创建bootstrap.properties并添加调用config-server服务的配置信息
其配置信息格式如下:
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
label: 文件路径
application:文件名
profile:配置策略(用于哪个环境下)
以 /{application}-{profile}.properties 为例
#读取config-server下的配置文件
spring.cloud.config.name=common
spring.cloud.config.profile=test
#开启服务配置
spring.cloud.config.enabled=true
#配置中心名称(可以是集群)
spring.cloud.config.discovery.service-id=config-server
1.6 先后启动 eureka-server、config-server、eureka-client 服务 进行测试
二、配置在 git 中
2.1 在父工程下新建common-test.properties配置文件 上传到 git
message = springcloud_properties_message
2.2 修改config-server 服务的配置文件(将...active改为...git.uri)即可
spring.application.name=config-server
# 应用服务 WEB 访问端口
server.port=8888
#eureka注册服务地址
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
#取本地配置(默认从resources文件下读取配置文件)
#spring.profiles.active=native
#读取指定文件
#spring.cloud.config.server.native.search-locations=file:D:/properties/
#取git的配置文件
spring.cloud.config.server.git.uri=https://github.com/houfanGitHub/springcloud/
#spring.cloud.config.server.git.search-paths=
#如果是私有项目,则需要配置账号密码,公共则不需要
#spring.cloud.config.server.git.username=
#spring.cloud.config.server.git.password=
2.3 修改eureka-client服务的pom文件(添加config.label)
#取git地址--需要添加文件分支
spring.cloud.config.label=master
2.4 重启服务测试
注意:这样会有一个bug!!!
如果再将配置改为取本地common-test.properties的配置信息的时候 取的是父工程的同名文件,
如果取的是dev环境的配置信息,取的config-server中的配置信息。
解决办法:
使用相对定位的方式,指定配置文件的位置。
这段配置上面已经给出。
源码地址:https://github.com/houfanGitHub/springcloud.git