美文网首页
Spring Cloud Config 配置中心 native

Spring Cloud Config 配置中心 native

作者: goodcto | 来源:发表于2019-10-17 20:26 被阅读0次

    背景说明

    由于很多时候,生产环境没有git,也没有svn等等,所以需要使用native模式,鉴于网上缺少相关的资料,因此以此为切入点,记录一下native模式下Spring Cloud Config一些常用的功能

    config-server配置

    1. 首先,老套路引入pom
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-config-server</artifactId>
            </dependency>
    
    1. bootstrap.yml配置本地存储 官方文档在此
      • spring.profiles.active=composite,他是一个list,我们这里面因为是本地,添加一条type=native,并配上search-locations,这个属性可以用class-path,也可以用绝对路径,但是正常情况下,建议用绝对路径,因为配置文件会有改动,如果放在项目里面,改动起来比较麻烦。
      • 还要设置pring.cloud.config.server.bootstrap=true
      • config文件夹下,我放了三个文件config-info-dev.yml,config-info-test.yml,config-info-prod.yml,里面存放了不通内容,主要就为了测试
    server:
        port: 8001
    spring:
      application:
        name: config-server-1
      profiles:
        active: composite
      cloud:
        config:
          server:
            composite:
              - type: native
                # 文件存放的绝对路径,源码里面我用绝对路径的方式放在了resources里面,这里需要改成自己的路径
                search-locations: file:///Users/sunhan/Downloads/config  
            bootstrap: true
    
    1. 启动类
    @SpringBootApplication
    @EnableConfigServer
    public class EurekaConfigApp {
        public static void main(String[] args) {
            SpringApplication.run(EurekaConfigApp.class, args);
        }
    }
    

    至此,config-server暂告一段路

    config-client配置

    1. 继续,引入pom
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-config-client</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
    1. client添加了两个配置文件一个bootstrap.yml, 官方文档也说了If you use the bootstrap flag, the config server needs to have its name and repository URI configured in bootstrap.yml.。config的主要说明如下
      • uri: 就是config-server的请求路径
      • profile、name:这里面的profile和spring.profiles.active没有半毛钱关系,他仅仅是区分引用那个文件,比如配置文件config-info-dev.yml,name就是config-info,profile就是dev,还有一个label属性,官方解释是The label name to use to pull remote configuration properties,我的理解就是应该在git等远程仓库中会用的上,至少在文件匹配,profile和name够用了
    spring:
      cloud:
        config:
          uri: http://localhost:8001
          profile: prod
          name: config-info
    

    还有一个就是spring-boot的application.yml文件,其中spring.cloud.config.name默认值就是spring.application.name

    server:
      port: 8002
    spring:
      application:
        name: config-info
      profiles:
        # 这里主要是为了掩饰和config.profile的区分
        active: dev
    

    最后,贴出来启动类

    @SpringBootApplication
    public class ConfigClientApp1 implements CommandLineRunner {
    
        public static void main(String[] args) {
            SpringApplication.run(ConfigClientApp1.class, args);
        }
        @Value("${env}")
        private String env;
        @Value("${hello}")
        private String hello;
        public void run(String... args) {
            System.out.println("================");
            System.out.println(env);
            System.out.println(hello);
            System.out.println("================");
        }
    }
    

    输入结果

    ================
    prod1
    dev
    ================
    

    接下来,就要考虑刷新的问题了。手动刷新,亦或是整合Spring Cloud Bus热刷新,下次侃

    项目源码

    结束语

    通过学习提高工作效率和质量,在学习中留点记录,方便日后回忆,记录之处过于随意,如有错误或不当之处,还请客观指正,相互学习!

    相关文章

      网友评论

          本文标题:Spring Cloud Config 配置中心 native

          本文链接:https://www.haomeiwen.com/subject/woavmctx.html