springCloud config本地配置操作
一般很多項(xiàng)目不是在springcloud的環(huán)境中使用的,但是需要用到分布式配置中心來管理一些外部或者項(xiàng)目的配置,這個(gè)時(shí)候我們可以使用springcloud-config的本地配置。
配置config-server服務(wù)端
使用start.spring.io創(chuàng)建一個(gè)springcloud工程,pom中引入:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency>
啟動(dòng)類加上@EnableConfigServer注解:
@SpringBootApplication @EnableConfigServer public class ConfigApplication { public static void main(String[] args) { SpringApplication.run(ConfigApplication.class, args); } }
在resources文件夾下創(chuàng)建properties文件夾,在properties文件夾下創(chuàng)建config-dev.properties文件存放配置信息。
修改配置文件application.properties:
#項(xiàng)目啟動(dòng)端口 server.port=8888 #配置文件在本地 spring.profiles.active=native #配置文件地址 spring.cloud.config.server.native.search-locations=classpath:properties
關(guān)于配置文件的命名請參考這里,配置文件的名稱和路徑會分別代表不同的配置名稱和配置激活屬性:
/{application}/{profile}[/{label}] /{application}-{profile}.yml /{label}/{application}-{profile}.yml /{application}-{profile}.properties
啟動(dòng)項(xiàng)目并打開配置:http://localhost:8888/config/dev
配置屬性
看到上面的信息則說明配置成功,這里我配置了一個(gè)項(xiàng)目的端口號: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配置文件名字對應(yīng)的。
啟動(dòng)項(xiàng)目:我們可以看到配置的端口號8001生效了:
這里有個(gè)小坑我記一下,springcloud config讀取git配置文件的時(shí)候,properties文件會出現(xiàn)中文亂碼的情況,所有我使用的是yml文件,不會出現(xiàn)亂碼的問題。網(wǎng)上搜了一下,有人說是spring加載Properties文件的 load方法輸入流的編碼是 ISO 8859-1。所以我避免麻煩使用yml文件。
git配置方法:
server:
port: 8888
spring:
cloud:
config:
server:
git:
username: xxx
password: xxx
補(bǔ)充知識:spring cloud config 本地配置和遠(yuǎn)程GIT部署 公共配置獲取
引言
在我們開發(fā)spring boot微服務(wù)框架時(shí),經(jīng)常會用到各種各樣的配置,而這些配置在我們沒有采用整體項(xiàng)目管理或者產(chǎn)品管理下,顯得很混亂,尤其是一些公共的配置,加上我們微服務(wù)模塊化,比如說要修改一個(gè)庫配置,或許要修改到各個(gè)模塊去整體調(diào)配,增加工作量的同時(shí),對工作完全是一無是處的.
為此,對服務(wù)配置文件進(jìn)行整體管理是必不可少的.然 ---spring cloud config在微服務(wù)架構(gòu)下,應(yīng)用而生,當(dāng)然它的作用不止是這個(gè)大.
官網(wǎng): https://cloud.spring.io/spring-cloud-config/
部署
服務(wù)端
1.既然是服務(wù)型的框架,那么它必然會有一個(gè)Server和一個(gè)Client來實(shí)現(xiàn)簡單的示例.和其他springboot或者cloud的一樣,我們既然要在項(xiàng)目中應(yīng)用它,必是要導(dǎo)入或者引入包.官網(wǎng)明確給出了maven和gradle的配置語句.目前我在網(wǎng)上看的很多示例都加入了一些他們自己項(xiàng)目的東西,比如說eureka或者是amqp-消息配置或者一些負(fù)載均衡的包或者是配置可熱加載的包.這些信息涉及到更深的技術(shù),之后慢慢理解,我們在這就只做cloud config的實(shí)現(xiàn).
新建Server項(xiàng)目==>maven配置刷包==>編輯Applaction加注解;
@EnableDiscoveryClient @EnableConfigServer @SpringBootApplication public class ConfigServerApplication { public static void main(String[] args) { SpringApplication.run(ConfigServerApplication.class, args); } }
2.Server工程的配置可以是yml或者properties,自己按照自己的喜好.我這里用了yml;配置有標(biāo)注,
2.1. 遠(yuǎn)程GIT配置方法
server:
port: 7001 #Server端口,client訪問端口 端口默認(rèn)8888
spring:
cloud:
config:
server:
git:
uri: https://*****/*******/****.git #遠(yuǎn)程git倉庫
username: ########### #賬戶
password: ******** #密碼
search-paths: properties #搜索目錄
application:
name: config-server #名稱
2.2. 本地配置方法
server:
port: 7001 #Server端口,client訪問端口 端口默認(rèn)8888
spring:
profiles:
active: native #告訴服務(wù),我現(xiàn)在要啟用本地配置(優(yōu)先考慮采用工程目錄resources下配置)
application:
name: config-server #名稱
cloud:
config:
server:
native:
search-locations: E:/Document/cloud_config/properties/ #明確采用該目錄下配置
3.養(yǎng)成看看原代碼的習(xí)慣,大部分看不懂邏輯,沒有切入點(diǎn),哈哈!不過還是能看出來點(diǎn)端倪.
3.一個(gè)configServer搞完,現(xiàn)在把它運(yùn)行起來,似乎發(fā)現(xiàn)了它的運(yùn)行原理.通過日志看代碼.
不難看除,原代碼原來是這個(gè)樣子,入口有了,更加方便查看源代碼的原理.看方法入?yún)?似乎我們客戶端需要提供者幾個(gè)字段的配置.name profiles label...
客戶端
1.和服務(wù)端方式相同,接下來客戶端依舊是導(dǎo)包,加注解.接下來客戶端的配置需要在bootstrap.yml的配置.
spring:
application:
name: system-core #名稱
cloud:
config:
uri: http://localhost:7001 #server服務(wù)
name: system-core,datasource,reids #尋找配置文件(,)隔開是多個(gè)配置文件
profile: core
enabled: true #默認(rèn)即時(shí)true,還是加上吧
1.1 我這里配置比較簡單,只要Server requestmapping認(rèn)識就行,當(dāng)然不同的配置對不同的項(xiàng)目使用更便利,自行研究吧,官網(wǎng)有一些配置的樣例,大家可以看看.網(wǎng)上的一些例子可能久遠(yuǎn),包含沒有所有,也可以看原代碼的類.來查看怎么配置,如何去查找配置文件的.
EnvironmentController
1.2 怎么讓一個(gè)項(xiàng)目訪問幾個(gè)或者公共配置,這里我們只要將spring.cloud.config.name字段屬性配置用逗號隔開寫不同的文件名即可,也是其他很多博客說是用spring.application.name,這種方法是錯(cuò)誤的,不要采用.還有一種方法是我們什么也不做,只要在配置文件目錄加一個(gè)application.properties的文件,既可以每個(gè)微服務(wù)都默認(rèn)訪問.
2.我們再來看看原代碼,了解一些配置和邏輯,這個(gè)配置就不會迷茫,也不會出現(xiàn)冗余的配置.
3.運(yùn)行起來.
遠(yuǎn)程配置讀起來.
本地配置讀起來.
以上這篇springCloud config本地配置操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot整合iText7導(dǎo)出PDF及性能優(yōu)化方式
在SpringBoot項(xiàng)目中整合iText7庫以導(dǎo)出PDF文件,不僅能夠滿足報(bào)告生成需求,而且可以處理復(fù)雜的文檔布局與樣式,整合步驟包括添加Maven依賴、編寫PDF生成代碼,性能優(yōu)化方面,建議使用流式處理、緩存樣式與字體、優(yōu)化HTML/CSS結(jié)構(gòu)、采用異步處理2024-09-09Knife4j?3.0.3?整合SpringBoot?2.6.4的詳細(xì)過程
本文要講的是?Knife4j?3.0.3?整合SpringBoot?2.6.4,在SpringBoot?2.4以上的版本和之前的版本還是不一樣的,這個(gè)也容易導(dǎo)致一些問題,本文就這兩個(gè)版本的整合做一個(gè)實(shí)戰(zhàn)介紹2022-09-09Java IO流之節(jié)點(diǎn)流與字符流的相關(guān)知識總結(jié)
今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識,文章圍繞著Java節(jié)點(diǎn)流與字符流展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06解決IDEA2020 創(chuàng)建maven項(xiàng)目沒有src/main/java目錄和webapp目錄問題
這篇文章主要介紹了IDEA2020 創(chuàng)建maven項(xiàng)目沒有src/main/java目錄和webapp目錄問題解決方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10基于maven搭建一個(gè)ssm的web項(xiàng)目的詳細(xì)圖文教程
這篇文章主要介紹了基于maven搭建一個(gè)ssm的web項(xiàng)目的詳細(xì)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09