springcloud-config

SpringCloud-Config

spring cloud config 分为服务端客户端两部分。

  • 服务端:Config Server,配置中心。 独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息,一般从git上读取配置
  • 客户端:Client 连接服务端,获取配置,管理应用资源,在启动时从配置中心加载配置

git配置中心

  • application.yml 服务端

    spring:
      profiles:
        active: dev
    ---
    spring:
      profiles: dev
      application:
        name: springcloud-config-dev
    ---
    spring:
      profiles: test
      application:
        name: springcloud-config-test
    
  • config-client.yml 客户端

    spring:
      profiles:
        active: dev
    ---
    #Eureka配置,服务注册到哪里
    server:
      port: 8201
    eureka:
      client:
        service-url:
          defaultZone: http://eureka7003.com:7003/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7001.com:7001/eureka/
    
    #spring配置
    spring:
      profiles: dev
      application:
        name: springcloud-provider-dept
        
    ---
    #Eureka配置,服务注册到哪里
    server:
      port: 8202
    eureka:
      client:
        service-url:
          defaultZone: http://eureka7003.com:7003/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7001.com:7001/eureka/
    
    #spring配置
    spring:
      profiles: test
      application:
        name: springcloud-provider-dept
    

服务端

  • 依赖

    <dependencies>
    
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-config-server -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>
    
        <!--eureka完善监控信息-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    
    </dependencies>
    
  • yml配置

    server:
      port: 3344
    spring:
      application:
        name: springcloud-config-server
      #连接远程仓库
      cloud:
        config:
          server:
            git:
              uri: https://gitee.com/jin_pengyong/springcloud-config.git #git上项目路径,http,非ssh
    
  • 启动类

    @SpringBootApplication
    @EnableConfigServer
    public class Config_server_3344 {
        public static void main(String[] args) {
            SpringApplication.run(Config_server_3344.class, args);
        }
    }
    

测试:访问http://localhost:3344/master/application-dev.yml读取application.yml配置中dev环境

http://localhost:3344/master/config-client-dev.yml读取config-client.yml配置文件中dev环境

客户端

  • 依赖

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-config -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
            <version>2.1.3.RELEASE</version>
        </dependency>
    
        <!--eureka完善监控信息-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>
    
  • yml配置

    • application.yml:用户级配置

      #用户级配置
      spring:
        application:
          name: springcloud-config-client-3355
      
    • bootstrap:系统级配置

      #系统级配置
      spring:
        cloud:
          config:
            uri: http://localhost:3344
            name: config-client #需要从git上读取的资源名称,不要后缀
            profile: dev #环境
            label: master #分支
      
  • 测试

    • 启动类

      @SpringBootApplication
      public class ConfigClient_3355 {
          public static void main(String[] args) {
              SpringApplication.run(ConfigClient_3355.class, args);
          }
      }
      
    • controller

    @RestController
    public class ConfigClientController {
    
        //这里读取的都是远程git服务器上
        @Value("${spring.application.name}")
        private String applicationName;
    
        @Value("${eureka.client.service-url.defaultZone}")
        private String eurekaServer;
    
        @Value("${server.port}")
        private String port;
    
        @RequestMapping("config")
        public String getConfig() {
            return "applicationName==>" + applicationName + ",eurekaServer==>" + eurekaServer + ",port==>" + port;
        }
    }
    
  • 访问:http://localhost:8201/config通过获取信息,此时修改bootstrap.yml中profile为test,就可以通过8202端口访问

posted @ 2021-09-23 08:59  jpy  阅读(12)  评论(0)    收藏  举报