1. 程式人生 > >SpringCloud 配置檔案交給 git 管理

SpringCloud 配置檔案交給 git 管理

  1. gitHub中建立專案並存放配置檔案
  2. 搭建一個註冊中心
  3. 搭建一個服務git倉庫進行連線
  4. 搭建一個服務通過倉庫連線服務呼叫配置檔案

架構圖

SpringCloudConfigGit

gitHub中建立專案並存放配置檔案

SpringCloudConfig

搭建一個註冊中心 :: 服務註冊中的地址

eureka.client.serviceUrl.defaultZone=http://localhost:7070/eureka/

搭建一個服務git倉庫進行連線

pom 檔案中新增依賴

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

新增application.yaml配置檔案

server:
  port: 8000

spring:
  application:
    name: spring-cloud-config-server
  cloud:
    config:
      server:
        git:
          uri: https://github.com/jiangruyi/SpringCloud.git
          search-paths: spring-cloud-config-core
          username: [email protected]
password: xxx eureka: client: service-url: defaultZone: http://localhost:7070/eureka/

編寫SpringBoot啟動類

@EnableConfigServer
@EnableDiscoveryClient
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        new SpringApplicationBuilder(Application.class).web(true).run(args);
    }

}

搭建一個服務通過倉庫連線服務呼叫配置檔案

新增 pom 依賴

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

編寫 bootstrap.yaml 配置檔案

spring:
  cloud:
    config:
      name: application
      profile: dev
      uri: http://localhost:8000/
      label: master

server:
  port: 9000

spring.cloud.config.uri :: 與git連線的服務地址

編寫基本配置檔案 application.yaml

spring:
  application:
    name: config-client-git

server:
  port: 9000

eureka:
  client:
    service-url:
      defaultZone: http://localhost:7070/eureka/

編寫 SpringBoot 啟動類讀取git上的配置檔案

@EnableDiscoveryClient
@SpringBootApplication
@RestController
public class Application {

    @Value("${com.znsd.config}")
    private String gitValue;
    
    public void setGitValue(String gitValue) {
        this.gitValue = gitValue;
    }
    
    @GetMapping("hello")
    public String hello () {
        return gitValue;
    }
    
    public static void main(String[] args) {
        new SpringApplicationBuilder(Application.class).web(true).run(args);
    }

}

配置熱部署

在呼叫配置服務端 pom 檔案中新增依賴

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

在要動態熱部署的配置類中新增: @RefreshScope 註解

POST 方式訪問URL http://localhost:9000/refresh重新整理配置

注意:

返回訊息中包含: Full authentication is required to access this resource.

解決方案:

  • 將安全認證關掉: management.security.enabled=false
  • 配置一個安全認證