springCloud配置本地配中心SpringCloudConfig


多環境配置

在一般開發過程中如果調試都在本地進行,則可以設置一個多環境配置,在本地與線上配置間來回切換。

springcloud默認會訪問的配置文件名是application.properties,

我們如果要創建多環境的配置文件的話,文件名格式應為:application-{profile}.properties

其中的{profile}用來標識不同的環境,如application-native.properties文件可以用來配置本地環境、application-prod.properties文件可以用來配置生產環境。

 

springcloud中通過“spring.profiles.active”屬性來指定{profile},如spring.profiles.active=native,則使用的是application-native.properties配置文件。

 

設置“spring.profiles.active”屬性的方法有兩種:

1、通過eclipse的-D設置系統參數。

找到Config(控制中心)和Eureka(注冊中心)的main函數,右鍵點擊:

 

將spring.profiles.active=native這項屬性設置直接通過-D注入系統參數。

 

2、將此屬性寫入入口application.properties文件中。

 

建立本地配置中心

配置中心分為兩部分組成:客戶端和服務端。

服務端是單獨的服務,需要注冊到注冊中心中。

而客戶端則是存在於各個其他服務中的。

 

配置中心的服務端既可以將配置文件保存在遠程的git倉庫中,也可以將這些配置文件保存在本地,因為平常開發用本地配置中心較多,此次主要講本地配置中心的搭建。

 

服務端

先建立配置中心的啟動入口:

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.config.server.EnableConfigServer;

 

@EnableConfigServer

@SpringBootApplication

public class ConfigServer {

    public static void main(String[] args) throws Exception {

        SpringApplication.run(ConfigServer.class, args);

    }

}

 

其pom文件中只需要添加以下依賴即可:

<dependency>

    <groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-config-server</artifactId>

</dependency>

 

配置文件application.properties如下:

#配置中心端口
server.port=8887

spring.application.name=config-server

logging.config=classpath:log4j2.xml

 

spring.profiles.active=native

#申明本地配置文件的存放位置

spring.cloud.config.server.native.searchLocations=file:D:\\etc\\native

#注冊中心

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

 

#刷新時,關閉安全驗證

management.security.enabled=false

 

#開啟消息跟蹤

spring.cloud.bus.trace.enabled=true

 

啟動后,此服務端會被注冊到注冊中心。

 

客戶端

客戶端存在於各個服務中,只需要在需要的服務項目中創建一個bootstrap.properties配置文件,即可從配置中心服務端獲取相關配置。

 

bootstrap.properties:

#配置中心的地址

spring.cloud.config.uri=http://localhost:8887/

#對應的是配置文件規則中的{application}部分

spring.cloud.config.name=native

#對應的是配置文件規則中的{profile}部分,可以是多個,用逗號隔開。

spring.cloud.config.profile=common,mysql,activemq

#對應的是配置文件規則中的{label}部分

spring.cloud.config.label=master

 

通過客戶端的bootstrap.properties配置文件可以看出,其實里面就寫了兩種東西:

spring.cloud.config.uri是配置中心地址,用來定位配置中心。

其余的三個是“配置文件規則”,用來定位“具體的配置文件”。

我們再來講一下,什么是“配置文件規則”:

我們之前在講配置中心服務端的時候,定義了一個spring.cloud.config.server.native.searchLocations=file:D:\\etc\\native參數

這個硬盤路徑里裝的都是具體的配置文件,而每個客戶端要獲取的也是這些配置文件。具體的文件例如下圖所示:

 

 

由圖中我們可看出,里面所有的文件的命名規則都遵循:{application}-{profile}.properties

所以我們客戶端bootstrap.properties文件中的spring.cloud.config.name=native參數,實際上是為了匹配到這些配置文件的{application}前綴,

所以spring.cloud.config.profile=common,mysql,activemq參數匹配的就是{profile}后綴了。

 

所以上面實例的配置中心客戶端實際上只會拿到native-common.properties、native-mysql.properties、native-activemq.properties這三個配置文件。


免責聲明!

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



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