我是靠谱客的博主 冷艳白昼,最近开发中收集的这篇文章主要介绍spring cloud config学习入门初探,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

spring cloud config 学习后的小结:

    spring cloud config提供了一个集中管理配置文件的项目,是spring cloud 技术体系的一个子项目;目前支持本地存储,Git以及Subversion,默认配置是git服务器

    搭建spring cloud config项目作为配置服务器的过程分三个环节:

    1.以码云的git服务器为例进行搭建,首先在http://git.oschina.net/,上注册一个用户并创建一个git项目,作为项目配置文件管理的一个项目,把我们要用到的项目配置文件 通过git上传到git服务器上,例如:


可以创建这样的文件提交到git服务器。

config-demo-dev.yml的具体参数:

spring:
datasource:
username: test
password: '{cipher}851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3'
到此配置文件项目创建完成,
2.接下来完成spring cloud config server 服务器的搭建,具体步骤如下:
 
  • 使用idea创建一个config-server的项目
  • 项目名称为:config-server
  • 项目的pom依赖:
  • <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.6.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <spring-cloud.version>Dalston.SR2</spring-cloud.version>
    </properties>
    <dependencies>
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    </dependency>
    </dependencies>
    <dependencyManagement>
    <dependencies>
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>${spring-cloud.version}</version>
    <type>pom</type>
    <scope>import</scope>
    </dependency>
    </dependencies>
    </dependencyManagement>
    <build>
    <plugins>
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    </plugins>
    </build>
  • 创建一个启动类:
  • @SpringBootApplication
    @EnableConfigServer
    public class SpringConfigApplication {
    public static void main(String[] args) {
    SpringApplication.run(SpringConfigApplication.class, args);
    }
    }
    
    一定要加上这个注解@EnableConfigServer ,只有加上这个注解才能让spring boot自动加载配置文件
    表明这个服务是管理配置文件的服务。
 
  • 在再项目资源目录创建一个项目配置文件:
  • application.yml
  • 文件内容如下:
  • server:
    port: 8088 #配置服务器访问的端口号
    spring:
    cloud:
    config:
    server:
    git:
    uri: https://git.oschina.net/jason0824/spring-config-demo.git #git服务器地址,此服务器是上传配置文件的服务器地址
    search-paths: config,encryption #要匹配的git服务器文件目录
    application:
    name: config-demo-dev #配置文件的名称
    profiles:
    active: master #当前分支名称
  • 配置完成可能以启动服务:如:http://localhost:8088/config-demo-dev/master
  • 返回结果如下: 
{"name":"config-demo-dev","profiles":["master"],"label":null,"version":"2f97c85070294f8157334810bcf27c29ec5366b6","state":null,"propertySources":[{"name":"https://git.oschina.net/jason0824/spring-config-demo.git/config-demo-dev.yml","source":{"spring.datasource.username":"dbuser========myname","spring.datasource.password":"851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3"}}]}
证明已经读取到了刚才上传到git服务器的配置文件内容,同样也可以用命令行的方式来访问,访问方式:

curl

http://localhost:8088/config-demo-dev/master
得到的结果和上面访问的方式是一样,只是这个方式是展现在命令行里面的。

{"name":"config-demo-dev","profiles":["master"],"label":null,"version":"2f97c85070294f8157334810bcf27c29ec5366b6","state":null,"propertySources":[{"name":"https://git.oschina.net/jason0824/spring-config-demo.git/config-demo-dev.yml","source":{"spring.datasource.username":"dbuser========myname","spring.datasource.password":"851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3"}}]}bogon:lztoon chenxiaonan$ 

至此搭建的spring cloud config server项目完成,可以正常使用。
3.再搭建一个客户端项目来使用刚才搭建的配置服务器,创建步骤如下:
如第二步一样,使用idea创建一个名为:spring-config-client项目。
 
  • pom依赖如下:
  • <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.6.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <spring-cloud.version>Dalston.SR2</spring-cloud.version>
    </properties>
    <dependencies>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    </dependency>
    </dependencies>
    <dependencyManagement>
    <dependencies>
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>${spring-cloud.version}</version>
    <type>pom</type>
    <scope>import</scope>
    </dependency>
    </dependencies>
    </dependencyManagement>
    <build>
    <plugins>
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    </plugins>
    </build>
  • 创建一个项目启动类:如 ClientApplication
  • @SpringBootApplication
    public class ClientApplication {
    public static void main(String[] args) {
    SpringApplication.run(ClientApplication.class, args);
    }
    }
  • 创建两个配置文件分别为:application.yml,bootstrap.yml
  • 之所以要创建一个boostrap.yml文件是因为此文件启动的级别要优先其他任何的配置文件,在这个文件里面配置了spring cloud config server项目,它要优先于其他的配置文件启动
  • application.yml
  • 内容如下:
  • server:
  • port:8001 #表示客户端项目启动访问的端口号

  • bootstrap.yml
  • 内容如下:spring:
    application:
    name: config-demo-dev
    # 对应config-server所获取的配置文件的{application}
    cloud:
    config:
    uri: http://localhost:8088/
    profile: dev
    # 指定profile,对应config-server所获取的配置文件中的{profile}
    label: master
    #分支
    上面标识的config-demo-dev名称一定是配置文件名称,确保名称正确,否则在读取配置文件属性的时候会报错。
 
  • 创建一个可以访问属性文件的controller类,看看能否读取到真正配置文件的属性信息;
  • @RestController
    @RefreshScope
    public class SpringClientController {
    @Value("${spring.datasource.username}")
    private String name;
    @RequestMapping(value = "/refresh")
    public String refresh(){
    return "更新配置 "+this.name;
    }
    }
  • @RefreshScope此注解表示可以实时刷新到配置文件信息的变更,读取配置文件最新的属性信息。
  • 当然还要一个严重的问题是配置文件更改了目前还不能及时读取到,需要重新启动服务才能读取更新的配置文件信息,原因是git服务器没配置一个消息机制来通知客户端项目
  • 需要配置一个消息服务器使用消息机制来通知客户端,具体配置下次分享。可者spring的官方网站有相应的demo来提供学习参考。
  • 下面就可以启动项目来访问一下读取到的属性信息
  • 访问地址:http://localhost:8881/ref
  • 得到如下信息:
  • 更新配置 dbuser========myname表示已经读取到了config-demo-dev文件里面配置的
    spring.datasource.username这个属性。
   访问的流程如如下所示:
 











最后

以上就是冷艳白昼为你收集整理的spring cloud config学习入门初探的全部内容,希望文章能够帮你解决spring cloud config学习入门初探所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部