首页 > 代码库 > SpringCloud(3-3)Spring Cloud Config 云端存储配置信息

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="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jdk.version>1.7</jdk.version>
<spring.version>4.3.0.RELEASE</spring.version>
</properties>

<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-parent</artifactId>
<version>Brixton.SR4</version>
<relativePath/>
</parent>

<groupId>org.wanma.example</groupId>
<artifactId>org.wanma.example.ScConfigServer</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging>
<name>ScConfigServer</name>

<dependencies>

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

</dependencies>

</project>

2.在Application主类上添加@EnableConfigServer注解,具体如下

package org.wanma.example.sconfigserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;

@EnableConfigServer
@SpringBootApplication
public class Application
{

public static void main(String[] args)
{
SpringApplication.run(Application.class, args);
}

}

3.在GitHub上创建一个名ScConfigData为的repository,并在其中创建一个mmb-config-client.yml文件,内容如下

---
lucky-word: Lexiaofei-v99

4.开发一个application.yml,内容如下:

server:
port: 8001

spring:
cloud:
config:
server:
git:
uri: https://github.com/lexiaofei/ScConfigData
searchPaths: data

5.启动ScConfigServer应用,打开地址http://localhost:8001/ScConfigClient/default, 显示如下

{
"name":"ScConfigClient",
"profiles":["default"],
"label":"master",
"version":"091149689cdc758927fb1781e8f89445d921b15c",
"propertySources":
[
{
"name":"https://github.com/lexiaofei/ScConfigData/ScConfigClient.yml",
"source":{"lucky-word":"Lexiaofei-v99"}
}
]
}


二、创建并运行一个ScConfigClient应用

1.pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jdk.version>1.7</jdk.version>
<spring.version>4.3.0.RELEASE</spring.version>
</properties>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.6.RELEASE</version>
<relativePath/>
</parent>

<groupId>org.wanma.example</groupId>
<artifactId>org.wanma.example.ScConfigClient</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging>
<name>ScConfigClient</name>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-parent</artifactId>
<version>Brixton.SR4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

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

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>

</dependencies>


</project>


2.创建bootstrap.yml在resource下,并设置spring.application.name,spring.cloud.config.uri,server.port信息,具体如下

spring:
application:
name: ScConfigClient
cloud:
config:
uri: http://localhost:8001

---
server:
port: 8002

注意这里是bootstrap.yml而不是appliction.yml, 因为bootstrap.yml会在应用启动之前读取,而spring.cloud.config.uri会影响应用启动

3.创建一个Controller

package org.wanma.example.scconfigclient.web;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
*
*/
@RestController
public class LuckyWordController {

@Value("${lucky-word}")
String luckyWord;

@RequestMapping("/lucky-word")
public String showLuckyWord() {
return "The lucky word is: " + luckyWord;
}

}

4.启动Application,打开http://localhost:8002/lucky-word

package org.wanma.example.scconfigclient;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application
{

public static void main(String[] args)
{
SpringApplication.run(Application.class, args);
}

}

最终结果:
The lucky word is: Lexiaofei-v99

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