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这个属性。
   访问的流程如如下所示:
 
 
 
 
 
 
 
 
 
 
 
 
 
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值