参考:http://www.ityouknow.com/springcloud
首先,需要明确一个配置中心提供的核心功能应该有什么
- 提供服务端和客户端支持
- 集中管理各环境的配置文件
- 配置文件修改之后,可以快速的生效
- 可以进行版本管理
- 支持大的并发查询
- 支持各种语言
Spring Cloud Config可以完美的支持以上所有的需求。
Spring Cloud Config项目是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并依据此数据初始化自己的应用。Spring cloud使用git或svn存放配置文件,本项目以git做为示例。
git配置中心
创建git仓库,存放配置文件
首先,在git中创建一个仓库,存放我们的配置文件,如下:创建了一个仓库叫做:spring-cloud-demo,建立一个文件夹:config-repo,存放两个配置文件:config-dev.properties,config-test.properties
比如,我们经常需要配置我们的数据源,我们配置了两个数据源,生产环境的配置保存在config-dev.properties中:
同样的,在测试环境的配置保存在config-test.properties中。
提供端
添加依赖:
在provider中添加依赖,(当然了,spring-boot的依赖也得要的)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
<version>1.4.4.RELEASE</version>
</dependency>
本地配置
首先,添加如下配置:
eureka:
client:
service-url:
defaultZone: http://localhost:9999/eureka/ #将服务注册到那个注册中心去
server:
port: 7777
spring:
application:
name: demo-provider
cloud:
config:
server:
git:
uri: https://github.com/aBreaking/spring-cloud-demo/ #github 仓库地址
search-paths: config-repo #配置中心
username: github账号
password: github密码
启动类注解
在启动类中添加@EnableConfigServer注解
@SpringBootApplication
@EnableConfigServer
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}
启动provider
直接在浏览器中输入:http://localhost:7777/config-test.properties或者http://localhost:7777/config-dev.properties
这里的地址为:ip:port/配置文件名。可看到如下:
或者,输入url:http://localhost:7777/config/test
你会看到如下:你的配置中心的信息
即配置中心搭建成功。
使用端
添加依赖
在consumer中添加依赖:(当然了,spring-boot的依赖也得要的)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
<version>1.4.4.RELEASE</version>
</dependency>
本地配置
添加一个配置文件:bootstrap.properties。spring初始化时会先加载该配置文件,加载顺序优于applicaiton.properties。添加内容如下:
spring.cloud.config.name=config
spring.cloud.config.profile=test
spring.cloud.config.uri=http://localhost:7777
spring.cloud.config.label=master
同样application.properties中也得有配置:
spring.application.name=demo-consumer
server.port=8888
创建controller
接下来直接使用即可。创建一个controller,如下:
@RestController
public class ClientController {
@Value("${jdbc.url}")
String url;
@Value("${jdbc.username}")
String username;
@Value("${jdbc.password}")
String password;
@RequestMapping("/ds")
public String ds(){
return "测试环境数据源连接信息:url:"+url+",username:"+username+",password:"+password;
}
}
启动项目
在浏览器中输入:http://localhost:8888/test,即可得到配置中心的配置信息:
后记
如果consumer启动出现如下异常:java.lang.IllegalArgumentException: Could not resolve placeholder 'jdbc.url' in value "${jdbc.url}"。
确保consumer项目中没有spring-cloud-config-server依赖