发表于: 2017-07-23 23:16:33

1 1022


一、今天完成的事情:

   今天看了一下cloud

Spring Cloud Config是什么?

什么是配置信息?
一个Application中不只是代码,还需要连接资源和其它应用,经常有很多需要外部设置的项去调整Application行为,如切换不同的数据库,i18n国际化 等.应用中的会经常见到的xml,properties,yaml等就是配置信息.

常见的实现信息配置的方法:

  • 硬编码(缺点:需要修改代码,风险大)

  • 放在xml等配置文件中,和应用一起打包(缺点:需要重新打包和重启)

  • 文件系统中(缺点:依赖操作系统等)

  • 环境变量(缺点:有大量的配置需要人工设置到环境变量中,不便于管理,且依赖平台)

  • 云端存储(缺点:与其他应用耦合)Spring Cloud Config 就是云端存储配置信息的,它具有中心化,版本控制,支持动态更新,平台独立,语言独立等特性.


Spring Cloud Config的原理如图所示,真正的数据存在Git等repository中,Config Server去获取相应的信息,然后开发给Client Application,相互间的通信基于HTTP,TCP,UDP等协议.

创建并运行一个Spring Cloud Config Server

1.创建一个名为my-config-server的应用,并添加spring-cloud-starter-parent,spring-cloud-config-server依赖,pom信息具体如下

<span <?xml version="1.0" encoding="UTF-8"?><<span project<="" span="" style="word-break: break-all;"> 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"><<span modelversion<="" span="" style="word-break: break-all;">>4.0.0</<span modelversion<="" span="" style="word-break: break-all;">>  

  <<span parent<="" span="" style="word-break: break-all;">>       

 <<span groupid<="" span="" style="word-break: break-all;">>org.springframework.cloud</<span groupid<="" span="" style="word-break: break-all;">>         <<span artifactid<="" span="" style="word-break: break-all;">>spring-cloud-starter-parent</<span artifactid<="" span="" style="word-break: break-all;">>        <<span version<="" span="" style="word-break: break-all;">>Brixton.SR4</<span version<="" span="" style="word-break: break-all;">>        <<span relativepath<="" span="" style="word-break: break-all;">/>    </<span parent<="" span="" style="word-break: break-all;">>    <<span groupid<="" span="" style="word-break: break-all;">>org.mmb.cloud</<span groupid<="" span="" style="word-break: break-all;">>    <<span artifactid<="" span="" style="word-break: break-all;">>mmb-config-server</<span artifactid<="" span="" style="word-break: break-all;">>    <<span version<="" span="" style="word-break: break-all;">>1.0-SNAPSHOT</<span version<="" span="" style="word-break: break-all;">>    <<span packaging<="" span="" style="word-break: break-all;">>jar</<span packaging<="" span="" style="word-break: break-all;">>    <<span dependencies<="" span="" style="word-break: break-all;">>        <<span dependency<="" span="" style="word-break: break-all;">>            <<span groupid<="" span="" style="word-break: break-all;">>org.springframework.cloud</<span groupid<="" span="" style="word-break: break-all;">>            <<span artifactid<="" span="" style="word-break: break-all;">>spring-cloud-config-server</<span artifactid<="" span="" style="word-break: break-all;">>        </<span dependency<="" span="" style="word-break: break-all;">></<span dependencies<="" span="" style="word-break: break-all;">></<span project<="" span="" style="word-break: break-all;">>

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

package config;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.config.server.EnableConfigServer;/** * Created by mmb on 2016/7/30. */@EnableConfigServer @SpringBootApplicationpublic class MMBConfigServerApplication {    public static void main(String[] args) {        SpringApplication.run(MMBConfigServerApplication.class, args);    } }

3.去自己的GitHub上创建一个repository命名=MMBConfigData,并创建一个mmb-config-client.yml的配置文件,并添加一个key为luck-word,value mmb,或者其它任何值.具体如下

---<span lucky-word:<="" span="" style="word-break: break-all;"> mmb

4.回自己的工程,设置应用application.yml,配置spring.cloud.config.server.git.uri为"https://github.com/"YOUR-GITHUB-ID"/"YOUR-REPOSITORY-NAME"",并设置端口server.port为8001

server:  port8001spring:  cloud:    config:      server:        git:          urihttps://github.com/mumubin/MMBConfigData     searchPaths: data

5.启动应用并打开地址http://localhost:8001/mmb-con...将会看到配置好的信息,我的如下

{    <span "name"<="" span="" style="word-break: break-all;">: "mmb-config-client",    <span "profiles"<="" span="" style="word-break: break-all;">: [        "default"    ],    <span "label"<="" span="" style="word-break: break-all;">: "master",    <span "version"<="" span="" style="word-break: break-all;">: "4d9240f45fecd34136f81683d44c2e144792af86",    <span "propertysources"<="" span="" style="word-break: break-all;">: [        {            <span "name"<="" span="" style="word-break: break-all;">: "https://github.com/mumubin/MMBConfigData/data/mmb-config-client.yml",            <span "source"<="" span="" style="word-break: break-all;">: {   <span "lucky-word"<="" span="" style="word-break: break-all;">: "mmb"            }        }   ] }

创建并运行一个Spring Cloud Config Client

1.创建一个名为my-config-client的应用,并添加spring-cloud-starter-parent,spring-cloud-starter-config,spring-boot-starter-web依赖,pom信息具体如下

<span <?xml version="1.0" encoding="UTF-8"?><<span project<="" span="" style="word-break: break-all;"> 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"><<span modelversion<="" span="" style="word-break: break-all;">>4.0.0</<span modelversion<="" span="" style="word-break: break-all;">>    <<span parent<="" span="" style="word-break: break-all;">>        <<span groupid<="" span="" style="word-break: break-all;">>org.springframework.boot</<span groupid<="" span="" style="word-break: break-all;">>        <<span artifactid<="" span="" style="word-break: break-all;">>spring-boot-starter-parent</<span artifactid<="" span="" style="word-break: break-all;">>        <<span version<="" span="" style="word-break: break-all;">>1.3.5.RELEASE</<span version<="" span="" style="word-break: break-all;">>        <<span relativepath<="" span="" style="word-break: break-all;">/> <!-- lookup parent from repository --></<span parent<="" span="" style="word-break: break-all;">>    <<span dependencymanagement<="" span="" style="word-break: break-all;">>        <<span dependencies<="" span="" style="word-break: break-all;">>            <<span dependency<="" span="" style="word-break: break-all;">>      <<span groupid<="" span="" style="word-break: break-all;">>org.springframework.cloud</<span groupid<="" span="" style="word-break: break-all;">>                <<span artifactid<="" span="" style="word-break: break-all;">>spring-cloud-starter-parent</<span artifactid<="" span="" style="word-break: break-all;">>                <<span version<="" span="" style="word-break: break-all;">>Brixton.SR4</<span version<="" span="" style="word-break: break-all;">>               <<span type<="" span="" style="word-break: break-all;">>pom</<span type<="" span="" style="word-break: break-all;">>                <<span scope<="" span="" style="word-break: break-all;">>import</<span scope<="" span="" style="word-break: break-all;">>            </<span dependency<="" span="" style="word-break: break-all;">>        </<span dependencies<="" span="" style="word-break: break-all;">>    </<span dependencymanagement<="" span="" style="word-break: break-all;">><<span dependencies<="" span="" style="word-break: break-all;">>        <<span dependency<="" span="" style="word-break: break-all;">>          <<span groupid<="" span="" style="word-break: break-all;">>org.springframework.cloud</<span groupid<="" span="" style="word-break: break-all;">>            <<span artifactid<="" span="" style="word-break: break-all;">>spring-cloud-starter-config</<span artifactid<="" span="" style="word-break: break-all;">>        </<span dependency<="" span="" style="word-break: break-all;">><<span dependency<="" span="" style="word-break: break-all;">>            <<span groupid<="" span="" style="word-break: break-all;">>org.springframework.boot</<span groupid<="" span="" style="word-break: break-all;">>            <<span artifactid<="" span="" style="word-break: break-all;">>spring-boot-starter-web</<span artifactid<="" span="" style="word-break: break-all;">>   </<span dependency<="" span="" style="word-break: break-all;">>        <!-- Allow for automatic restarts when classpath contents change. -->        <<span dependency<="" span="" style="word-break: break-all;">>            <<span groupid<="" span="" style="word-break: break-all;">>org.springframework.boot</<span groupid<="" span="" style="word-break: break-all;">>         <<span artifactid<="" span="" style="word-break: break-all;">>spring-boot-devtools</<span artifactid<="" span="" style="word-break: break-all;">>            <<span optional<="" span="" style="word-break: break-all;">>true</<span optional<="" span="" style="word-break: break-all;">>     </<span dependency<="" span="" style="word-break: break-all;">>    </<span dependencies<="" span="" style="word-break: break-all;">>    <<span groupid<="" span="" style="word-break: break-all;">>org.mmb.cloud</<span groupid<="" span="" style="word-break: break-all;">>    <<span artifactid<="" span="" style="word-break: break-all;">>mmb-config-client</<span artifactid<="" span="" style="word-break: break-all;">>    <<span version<="" span="" style="word-break: break-all;">>1.0-SNAPSHOT</<span version<="" span="" style="word-break: break-all;">></<span project<="" span="" style="word-break: break-all;">>

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

<span spring:<="" span="" style="word-break: break-all;"><span   application:<="" span="" style="word-break: break-all;"><span   =""  name:<="" span="" style="word-break: break-all;"> mmb-config-client<span   cloud:<="" span="" style="word-break: break-all;"><span   =""  config:<="" span="" style="word-break: break-all;"><span   =""  =""  uri:<="" span="" style="word-break: break-all;">  <span http:="" localhost:8001<="" span="" style="word-break: break-all;">---<span server:<="" span="" style="word-break: break-all;"><span   port:<="" span="" style="word-break: break-all;"> 8002

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

3.创建一个Controller

@RestController    

public <span class LuckyWordController {     

 @Value(<span "${lucky-word}") 

String luckyWord;      

  @RequestMapping(<span "="" lucky-word"<="" span="" style="word-break: break-all;">)      public String showLuckyWord() {        return "The lucky word is: " + luckyWord;      }    }

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

@SpringBootApplicationpublic class Application {   

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

The lucky word is: mmb

二、遇到的问题:无

三、明天计划的事情

四、收获:



返回列表 返回列表
评论

    分享到