springcloud 使用git作为配置中心

参考: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依赖

猜你喜欢

转载自blog.csdn.net/abreaking2012/article/details/81392837