Spring Cloud Config(統(tǒng)一配置中心服務(wù)端和客戶端)

Spring Cloud Config

Spring Cloud Config為分布式系統(tǒng)中的外部化配置提供服務(wù)器和客戶端支持。Spring Cloud Config 是一種用來(lái)動(dòng)態(tài)獲取Git、SVN、本地的配置文件的一種工具。可以在所有環(huán)境中管理應(yīng)用程序的外部屬性。可以與任何語(yǔ)言運(yùn)行的任何應(yīng)用程序一起使用。當(dāng)應(yīng)用程序通過(guò)部署從開發(fā)到測(cè)試并進(jìn)入生產(chǎn)時(shí),可以管理這些環(huán)境之間的配置,并確保應(yīng)用程序具有遷移時(shí)需要運(yùn)行的所有內(nèi)容。服務(wù)器存儲(chǔ)后端的默認(rèn)實(shí)現(xiàn)使用git,可以輕松支持配置環(huán)境的標(biāo)簽版本,以及可用于管理內(nèi)容的各種工具。添加替代實(shí)現(xiàn)并使用Spring配置插入很容易。
Github地址:https://github.com/spring-cloud/spring-cloud-config
官方指引:https://spring.io/projects/spring-cloud-config

Spring Cloud Config Server功能:

1.用于外部配置的HTTP,基于資源的API(名稱 - 值對(duì)或等效的YAML內(nèi)容)
2.加密和解密屬性值(對(duì)稱或非對(duì)稱)
3.使用可輕松嵌入Spring Boot應(yīng)用程序 @EnableConfigServer

Spring Cloud Config Client功能(適用于Spring應(yīng)用程序):

1.綁定到Config ServerEnvironment使用遠(yuǎn)程屬性源初始化Spring
2.加密和解密屬性值(對(duì)稱或非對(duì)稱)

SpringBoot集成Spring Cloud Config Server

版本說(shuō)明
SpringBoot:2.1.3.RELEASE
SpringCloud:Greenwich.SR1

引入Spring Cloud Config Server依賴

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

這里使用Eureka注冊(cè)中心,所以需要加上

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

配置很簡(jiǎn)單 只需要在啟動(dòng)類上加@EnableEurekaClient開啟Eureka客戶端,@EnableConfigServer開啟統(tǒng)一配置中心

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

創(chuàng)建配置倉(cāng)庫(kù)

可以在私人Gitlab,碼云,Github等等創(chuàng)建
我這里是在Github上創(chuàng)建的配置文件,一般都是yml或者properties配置文件

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

需要在項(xiàng)目的配置文件中指定連接的倉(cāng)庫(kù),用戶名和密碼

image.png

spring.cloud.config.server.git.uri就是倉(cāng)庫(kù)的訪問(wèn)地址

spring:
  application:
    name: config
  cloud:
    config:
      server:
        git:
          uri: 項(xiàng)目配置倉(cāng)庫(kù)的位置,這個(gè)位置可以是:git文件夾、svn文件夾或者github項(xiàng)目位置,任何能訪問(wèn)到文件的地方。
          username: 登錄用戶名
          password: 登錄密碼

下面進(jìn)行測(cè)試
先啟動(dòng)Eureka注冊(cè)中心,在啟動(dòng)統(tǒng)一配置中心

image.png

在控制臺(tái)可以看到 會(huì)在臨時(shí)目錄中創(chuàng)建一份配置文件

驗(yàn)證配置是否生效

在瀏覽器訪問(wèn):http://localhost:8080/config-a.yml

image.png

官方提供http查看方式

/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties

application:應(yīng)用名 ,也就是spring.application.name
label:分支名,默認(rèn)master
profile:環(huán)境名,環(huán)境可以在配置文件的屬性名是env,不設(shè)置也可以

SpringBoot集成Spring Cloud Config Client

版本說(shuō)明
SpringBoot:2.1.3.RELEASE
SpringCloud:Greenwich.SR1

引入Spring Cloud Config Client依賴

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

這里使用Eureka注冊(cè)中心,所以需要加上

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

不需要在啟動(dòng)類中加入注解

由于是統(tǒng)一配置中心的客戶端,所以需要在yml配置文件中配置

spring:
  cloud:
    config:
      discovery:
        enabled: true
        service-id: config
      profile: dev

spring.cloud.config.discovery.enabled:開啟配置服務(wù)發(fā)現(xiàn)
spring.cloud.config.discovery.service-id:配置服務(wù)實(shí)例名稱,也就是Config Server的應(yīng)用名
spring.cloud.config.label:是配置分支名,默認(rèn)是master,可以不配置
spring.cloud.config.profile:環(huán)境名,對(duì)應(yīng)Config Serverenv

dev:開發(fā)環(huán)境
test:測(cè)試環(huán)境
pro:正式環(huán)境

重點(diǎn):需要把配置文件名由application.yml改名為bootstrap.yml

場(chǎng)景:當(dāng)使用Spring Cloud的時(shí)候,配置信息一般是從Config Server加載的,為了取得配置信息(比如密碼等),需要提早讀取配置。因此,把 Config Server 信息放在bootstrap.yml,用來(lái)加載需要的配置信息

原理:bootstrap.yml是被一個(gè)父級(jí)的 Spring ApplicationContext加載的。這個(gè)父級(jí)的 Spring ApplicationContext是先加載的,在加載application.ymlApplicationContext之前。

bootstrap與application

bootstrap.ymlbootstrap.properties)用來(lái)程序引導(dǎo)時(shí)執(zhí)行,應(yīng)用于更加早期配置信息讀取,如可以使用來(lái)配置application.yml中使用到參數(shù)等
application.ymlapplication.properties) 應(yīng)用程序特有配置信息,可以用來(lái)配置后續(xù)各個(gè)模塊中需使用的公共參數(shù)等。

配置完啟動(dòng)就可以讀取遠(yuǎn)程倉(cāng)庫(kù)的配置文件了

更多Spring Cloud Config用法可以參考:https://springcloud.cc/spring-cloud-config.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容