springcloud config demo搭建

springcloud config demo

服務端搭建

新建遠程git倉庫,保存配置,並將倉庫拉到本地,以後更新配置可在本地更新,在push到遠程倉庫

在這裏插入圖片描述

在這裏插入圖片描述

新建3355配置中心模塊

添加依賴:

        <!--config server-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>

主啓動開啓配置:

@SpringBootApplication
@EnableConfigServer
public class ConfigServer {

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

yaml配置文件:

server:
  port: 3355

spring:
  application:
    name: cloud-config-center
  cloud:
    config:
      server:
        git:
          #uri: #Github上的git倉庫名字
          uri: https://gitee.com/kevin_cai_ren/springcloud-config.git
          ##搜索目錄.這個目錄指的是github上的目錄
          search-paths:
            - springcloud-config
          username: [email protected]
          password: XXXXXX
      ##讀取分支
      label: master

eureka:
  client:
    service-url:
      defaultZone: http://eureka7779.com:7779/eureka/

啓動服務拉取配置

在這裏插入圖片描述

客戶端搭建

引入依賴:

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>

修改配置文件,注意,這裏使用的是bootstrap.yml,原因是bootstrap是系統級配置文件,優先級高於application.yml

server:
  port: 3366

spring:
  application:
    name: config-client
  cloud:
    #Config客戶端配置
    config:
      label: master #分支名稱
      name: config #配置文件名稱
      profile: dev #讀取後綴名稱 上訴3個綜合就是 master分支上 config-dev.yml
      uri: http://config-3355.com:3355 # 配置中心地址

eureka:
  client:
    service-url:
      defaultZone:  http://eureka7779.com:7779/eureka/

主啓動:

@EnableEurekaClient
@SpringBootApplication
public class ConfigClient {

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

@Value註解讀取配置

@RestController
public class TestController {

    @Value("${config.info: test}")//讀遠程配置,:後邊是默認值
    private String info;

    @RequestMapping("/get")
    public Object get(){
        return info;
    }
}

測試:

在這裏插入圖片描述

但是存在一個問題,如果我修改了遠程配置倉庫的配置,發現客戶端讀取的到配置並沒有立馬更新,得重啓一次纔行。

解決:

採取動態刷新

引入監控依賴:

        <!--監控-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

修改yml暴露監控端點:

#暴露監控端點
management:
  endpoints:
    web:
      exposure:
        include: "*"

在讀取配置的類上新增註解@RefreshScope

@RestController
@RefreshScope
public class TestController {

    @Value("${config.info: test}")//讀遠程配置,:後邊是默認值
    private String info;

    @RequestMapping("/get")
    public Object get(){
        return info;
    }
}

ok,這樣就實現了動態刷新,需要兩個步驟:

  • git修改配置
  • 發送一個post請求,請求地址:http://localhost:3366/actuator/refresh

這樣就可以是實現半自動更細hhh

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章