springCloud學習-分布式配置中心(Spring Cloud Config)


1、簡介

  Spring Cloud Config :分布式配置中心,方便服務配置文件統一管理,它支持配置服務放在配置服務的內存中(即本地),也支持放在遠程Git倉庫中。在spring cloud config 組件中,分兩個角色,一是config server,二是config client。

2、config server從本地讀取配置文件

  2.1、在父工程的pom.xml中的 <modules>節點下 添加如下代碼

     <module>config-server</module>
        <module>config-client</module>

  2.2、創建config-server工程,pom.xml文件如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.lishun</groupId>
    <artifactId>config-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>config-server</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>com.lishun</groupId>
        <artifactId>cloud</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>


    <dependencies>
         <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
    </dependencies>


</project>

  2.3、在程序的入口Application類加上@EnableConfigServer注解開啟配置服務器的功能,代碼如下:

@EnableConfigServer
@SpringBootApplication
public class ConfigServerApplication {

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

  2.4、application.properties配置文件,因為配置文件內容較多,感覺yml格式配置起來不太直觀,所以使用.properties格式

spring.application.name=config-server
server.port=8888

spring.cloud.config.server.native.search-locations= classpath:/shared
spring.profiles.active=native

  spring.profiles.active = native指定從本地讀取配置,讀取的路徑為classpath下的shared目錄  

  2.5、在工程的 Resources 目錄下建個 shared 文件夾,用於存放本地配置文。在 shared 目錄下,新建 config-client-dev.properties文件,內容如下

id  = config-test-native
name = study-cloud 

3、構建config-client

  3.1、創建config-server工程,pom.xml文件如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.lishun</groupId>
    <artifactId>config-client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>config-client</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>com.lishun</groupId>
        <artifactId>cloud</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>


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


</project>

  3.2、配置文件bootstrap.properties。

spring.application.name=config-client
spring.cloud.config.uri= http://localhost:8888/
spring.cloud.config.fail-fast=true
spring.profiles.active=dev
server.port=8881

  注意這里是bootstrap.properties,而不是application.properties。bootstrap相對於application具有優先的執行順序,在配置文件中spring.application.name指明了服務名稱,spring.cloud.config.uri指定讀取配置文件的路徑,

  如果沒有讀取成功,執行快速失敗(fail-fast),spring.profiles.active指明讀取的是dev文件,變量 { spring. application.name}和變 spring.profiles.active},兩者以“-”相連,構成了向config server讀取的配置文件名

  所以這里讀取的配置文件是config-client-dev.properties

  3.3、程序的入口類,寫一個API接口“/hi”,返回從配置中心讀取的id變量的值,代碼如下:

@SpringBootApplication
@RestController
public class ConfigClientApplication {

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


    @Value("${id}")
    String id;
    @RequestMapping(value = "/hi")
    public String hi(){
        return id;
    }
}

  3.4、啟動config server 和config client工程,打開網址訪問:http://localhost:8881/hi,網頁顯示:

config-test-native

4、從git遠程倉庫讀取配置文件

  4.1、修改config-server的配置文件application.properties,修改內容如下:

spring.application.name=config-server
server.port=8888

#spring.cloud.config.server.native.search-locations= classpath:/shared
#spring.profiles.active=native

spring.cloud.config.server.git.uri=https://github.com/lis-ylfy/config-test/
spring.cloud.config.server.git.searchPaths=lis
spring.cloud.config.label=master
spring.cloud.config.server.git.username=
spring.cloud.config.server.git.password=
  • spring.cloud.config.server.git.uri:配置git倉庫地址
  • spring.cloud.config.server.git.searchPaths:配置倉庫路徑
  • spring.cloud.config.label:配置倉庫的分支
  • spring.cloud.config.server.git.username:訪問git倉庫的用戶名
  • spring.cloud.config.server.git.password:訪問git倉庫的用戶密碼

  

  如果Git倉庫為公開倉庫,可以不填寫用戶名和密碼,如果是私有倉庫需要填寫,本例子是公開倉庫,放心使用。遠程倉庫 https://github.com/lis-ylfy/config-test/ 中有個文件config-client-dev.properties文件內容如下:

id  = config-test
name = study-cloud 

  4.2、重啟config server 和config client工程,打開網址訪問:http://localhost:8881/hi,網頁顯示:

config-test

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM