1. 程式人生 > 程式設計 >springCloud config本地配置操作

springCloud config本地配置操作

一般很多專案不是在springcloud的環境中使用的,但是需要用到分散式配置中心來管理一些外部或者專案的配置,這個時候我們可以使用springcloud-config的本地配置。

配置config-server服務端

使用start.spring.io建立一個springcloud工程,pom中引入:

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

啟動類加上@EnableConfigServer註解:

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

在resources資料夾下建立properties資料夾,在properties資料夾下建立config-dev.properties檔案存放配置資訊。

springCloud config本地配置操作

修改配置檔案application.properties:

#專案啟動埠
server.port=8888
#配置檔案在本地
spring.profiles.active=native
#配置檔案地址
spring.cloud.config.server.native.search-locations=classpath:properties

關於配置檔案的命名請參考這裡,配置檔案的名稱和路徑會分別代表不同的配置名稱和配置啟用屬性:

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

啟動專案並開啟配置:http://localhost:8888/config/dev

springCloud config本地配置操作

配置屬性

看到上面的資訊則說明配置成功,這裡我配置了一個專案的埠號:server.port,後面會用到。

配置 config-client客戶端

新建springboot工程,pom檔案中加入:

<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>

在resources檔案下加入配置檔案bootstrap.properties,配置使用config-server的配置:

spring.cloud.config.name=config
spring.cloud.config.profile=dev
spring.cloud.config.uri=http://localhost:8888

在這裡我們可以看到spring.cloud.config.name和spring.cloud.config.profile是和config-server中的config-dev.properties配置檔名字對應的。

啟動專案:我們可以看到配置的埠號8001生效了:

springCloud config本地配置操作

這裡有個小坑我記一下,springcloud config讀取git配置檔案的時候,properties檔案會出現中文亂碼的情況,所有我使用的是yml檔案,不會出現亂碼的問題。網上搜了一下,有人說是spring載入Properties檔案的 load方法輸入流的編碼是 ISO 8859-1。所以我避免麻煩使用yml檔案。

git配置方法

server:

port: 8888

spring:

cloud:

config:

server:

git:

username: xxx

password: xxx

補充知識:spring cloud config 本地配置和遠端GIT部署 公共配置獲取

引言

在我們開發spring boot微服務框架時,經常會用到各種各樣的配置,而這些配置在我們沒有采用整體專案管理或者產品管理下,顯得很混亂,尤其是一些公共的配置,加上我們微服務模組化,比如說要修改一個庫配置,或許要修改到各個模組去整體調配,增加工作量的同時,對工作完全是一無是處的.

為此,對服務配置檔案進行整體管理是必不可少的.然 ---spring cloud config在微服務架構下,應用而生,當然它的作用不止是這個大.

官網: https://cloud.spring.io/spring-cloud-config/

部署

服務端

1.既然是服務型的框架,那麼它必然會有一個Server和一個Client來實現簡單的示例.和其他springboot或者cloud的一樣,我們既然要在專案中應用它,必是要匯入或者引入包.官網明確給出了maven和gradle的配置語句.目前我在網上看的很多示例都加入了一些他們自己專案的東西,比如說eureka或者是amqp-訊息配置或者一些負載均衡的包或者是配置可熱載入的包.這些資訊涉及到更深的技術,之後慢慢理解,我們在這就只做cloud config的實現.

新建Server專案==>maven配置刷包==>編輯Applaction加註解;

springCloud config本地配置操作

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

2.Server工程的配置可以是yml或者properties,自己按照自己的喜好.我這裡用了yml;配置有標註,

2.1. 遠端GIT配置方法

server:
port: 7001 #Server埠,client訪問埠 埠預設8888

spring:
cloud:
config:
server:
git:
uri: https://*****/*******/****.git #遠端git倉庫
username: ########### #賬戶
password: ******** #密碼
search-paths: properties #搜尋目錄
application:
name: config-server #名稱

2.2. 本地配置方法

server:
port: 7001 #Server埠,client訪問埠 埠預設8888

spring:
profiles:
active: native #告訴服務,我現在要啟用本地配置(優先考慮採用工程目錄resources下配置)
application:
name: config-server #名稱
cloud:
config:
server:
native:
search-locations: E:/Document/cloud_config/properties/ #明確採用該目錄下配置

3.養成看看原始碼的習慣,大部分看不懂邏輯,沒有切入點,哈哈!不過還是能看出來點端倪.

springCloud config本地配置操作

3.一個configServer搞完,現在把它執行起來,似乎發現了它的執行原理.通過日誌看程式碼.

springCloud config本地配置操作

springCloud config本地配置操作

不難看除,原始碼原來是這個樣子,入口有了,更加方便檢視原始碼的原理.看方法入參,似乎我們客戶端需要提供者幾個欄位的配置.name profiles label...

客戶端

1.和服務端方式相同,接下來客戶端依舊是導包,加註解.接下來客戶端的配置需要在bootstrap.yml的配置.

spring:
application:
name: system-core #名稱

cloud:
config:
uri: http://localhost:7001 #server服務
name: system-core,datasource,reids #尋找配置檔案(,)隔開是多個配置檔案
profile: core
enabled: true #預設即時true,還是加上吧

1.1 我這裡配置比較簡單,只要Server requestmapping認識就行,當然不同的配置對不同的專案使用更便利,自行研究吧,官網有一些配置的樣例,大家可以看看.網上的一些例子可能久遠,包含沒有所有,也可以看原始碼的類.來檢視怎麼配置,如何去查詢配置檔案的.

EnvironmentController

1.2 怎麼讓一個專案訪問幾個或者公共配置,這裡我們只要將spring.cloud.config.name欄位屬性配置用逗號隔開寫不同的檔名即可,也是其他很多部落格說是用spring.application.name,這種方法是錯誤的,不要採用.還有一種方法是我們什麼也不做,只要在配置檔案目錄加一個application.properties的檔案,既可以每個微服務都預設訪問.

2.我們再來看看原始碼,瞭解一些配置和邏輯,這個配置就不會迷茫,也不會出現冗餘的配置.

springCloud config本地配置操作

3.執行起來.

遠端配置讀起來.

springCloud config本地配置操作

本地配置讀起來.

springCloud config本地配置操作

以上這篇springCloud config本地配置操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。