开始Spring Cloud Config

什么是Spring Cloud Config

Spring Cloud Config项目提供了一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分。

Spring Cloud Config Sever的管理git或svn的外部配置,集中配置到所有客户端。

Spring Cloud Config Client根据Spring框架的EnvironmentPropertySource从Spring Cloud Config Sever获取配置。

所有要开始Spring Cloud Config,一定要先了解Spring BootEnvironmentPropertySourceProfile等一些技术

Spring Cloud官网上提供了默认的基于git的配置,下面例子基于svn, svn地址用www.xxx.com代替了,另行修改下。

@EnableConfigServer

构建Spring Cloud Config Server,只需要一个@EnableConfigServer

@Configuration
@EnableAutoConfiguration
@EnableConfigServer
public class App {

    public static void main(String... args) {
        SpringApplication.run(App.class, args).getEnvironment();
    }

}

在到resource下面,添加application.yml,加上配置

server:
  port: 8888

spring:
  profiles:
    active: subversion
  cloud:
    config:
      server:
        svn:
          uri: https://www.xxx.com/svn/demo/demo-config-repo

添加pom.xml配置, 需要带入spring boot、spring cloud 和svn的jar

<!--spring cloud parent version-->
    <parent>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-parent</artifactId>
        <version>Angel.SR3</version>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <start-class>com.xxx.App</start-class>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <!--spring cloud config server-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
        <!--config server need read svn-->
        <dependency>
            <groupId>org.tmatesoft.svnkit</groupId>
            <artifactId>svnkit</artifactId>
            <version>1.8.10</version>
        </dependency>

        <!--spring boot test-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!--mvn spring-boot:run 命令-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

https://www.xxx.com/svn/demo/demo-config-repo下面提交一个文件,比如demo-development.properties

运行App.class, 访问 http://localhost:8888/{application}/{profile}/{label},比如:http://localhost:8888/dmeo/development/trunk

成功了。

{
    name: "demo",
    profiles: [
        "developement"
    ],
    label: "trunk",
    propertySources: [
        {
            name: "https://www.xxx.com/svn/demo/demo-config-repo/trunk/demo.properties",
            source: {
                demo.env: "default"
            }
        }
    ]
}
  • {application} 匹配客户端的 “spring.application.name”
  • {profile} 匹配客户端的”spring.active.profiles”
  • {label} 如果是svn匹配trunk/branchs等.

尝试下提供svn的属性,在访问,发现配置信息以及发生变化了。

Spring Cloud Config Client

客户端,仍然新建立一Spring boot的项目。加入spring-cloud-config-client

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-client</artifactId>
</dependency>

添加bootstrap.yml到resources下面。加入配置

spring:
  cloud:
    config:
      name: loupan
      profile: development
      label: trunk
      uri: http://localhost:8888

这里的http://localhost:8888是刚刚启动的Spring Cloud Config Server的应用。

2015-08-27 18:01:03.751  INFO 11520 --- [           main] b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource [name=‘configService‘, propertySources=[MapPropertySource [name=‘https://www.xxx.com/svn/demo/demo-config-repo/trunk/demo-developement.properties‘], MapPropertySource [name=‘https://www.xxx.com/svn/demo/demo-config-repo/trunk/demo.properties‘]]]

启动信息里面找到这样的日志,就成功了。它会自动加载的项目里面,你可以使用Spring的自动配置方便的使用外部配置。

例如直接在application.properties里面使用

spring.profiles.active = ${demo.env}

或者

@Configuration
public class DemoConfig {

    @Value("${demo.env}")
    public String env;

   ...

另外,他还提供了很多方式来满足需求。比如,修改了配置后,可以

$ curl -X POST http://localhost:8080/refresh

来刷新配置。

$ curl -X POST http://localhost:8080/restart

。。。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-03 05:56:22

开始Spring Cloud Config的相关文章

搭建spring cloud config

很久没更新了,因为不是专职研究spring cloud,因此更新速度得看工作强度大不大,每天能抽出的时间不多,如果更新太慢了,并且有小伙伴看的话,请见谅了. Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状态管理等操作提供了一种简单的开发方式. Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同

spring cloud config配置中心源码分析之注解@EnableConfigServer

spring cloud config的主函数是ConfigServerApplication,其定义如下: @Configuration @EnableAutoConfiguration @EnableConfigServer public class ConfigServerApplication { public static void main(String[] args) { new SpringApplicationBuilder(ConfigServerApplication.cl

Spring Cloud Config 配置属性覆盖优先级。

/** * Flag to indicate that the external properties should override system properties. * Default true. */ private boolean overrideSystemProperties = true; /** * Flag to indicate that {@link #isSystemPropertiesOverride() * systemPropertiesOverride} ca

Spring Cloud Config 入门

1.    简介 Spring Cloud Config 是用来为分布式系统中为微服务应用提供集中化的外部配置支持,主要分为Spring Cloud Config Server(服务器端)和Spring Cloud Config Client(客户端). 2.    Spring Cloud Config Server Spring Cloud Config Server为服务器端,它是一个单独的微服务应用,用来连接配置仓库(本文使用的是git仓库)并为客户端获取配置信息. 1.     首先,

SpringCloud(3-3)Spring Cloud Config 云端存储配置信息

Spring Cloud Config 云端存储配置信息 Spring Cloud Config 具有中心化,版本控制,支持动态更新,平台独立,语言独立等特性.我们的例子:1.真正的数据存在Git等repository中,2.ScConfigServer从git获取相应信息,3.ScConfigClient从ScConfigServer获取相互之间的通信基于HTTP,TCP,UDP等协议. 一.创建并运行一个ScConfigServer应用 1.pom.xml <project xmlns=&quo

spring cloud config svn仓库配置

之前快速入门了一下spring cloud config 但是仓库用的别人博客上的git仓库,公司用的是svn项目管理中心,下面这个自己配置的时候出现的错误 You need to configure a uri for the git repository 解决: 1.svn环境下需要引入的包 <dependency> <groupId>org.tmatesoft.svnkit</groupId> <artifactId>svnkit</artifa

Spring cloud config 用SVN做配置仓库

很多企业还没使用Git仓库来管理代码,而是使用SVN.在Spring cloud 实现配置管理的时候,就需要另外配置,跟官方Sample 有点区别. 接下来操作步骤有: 1.创建SVN 配置repo 2.开发服务端 3.开发客户端 4.刷新客户端 话不多说,上干货. 1. 创建SVN 配置repo 目录结果如下: 文件名称,暂时不纠结,往后看(MARK). cloud-config-test.properties 内容: payment.username=test_update_Angus_zh

Spring Cloud Config 分布式配置中心使用教程

一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中.在spring cloud config 组件中,分两个角色,一是config server,二是config client. 二.构建Config Server 创建一个spring-boot项目,取名为config-s

Spring Cloud Config客户端使用

要在应用程序中使用这些功能,只需将其构建为依赖于spring-cloud-config-client的Spring引导应用程序(例如,查看配置客户端或示例应用程序的测试用例).添加依赖关系的最方便的方法是通过Spring Boot启动器org.springframework.cloud:spring-cloud-starter-config.还有一个Maven用户的父pom和BOM(spring-cloud-starter-parent)和用于Gradle和Spring CLI用户的Spring