摘要:在使用的時(shí)候遇到一些坑,在這里記錄下,順便梳理下這個(gè)使用。使用來配合做一個(gè)配置文件管理,需要一個(gè)的服務(wù)端和一個(gè)的客戶端,服務(wù)端主要是和倉庫進(jìn)行一個(gè)連接,而的客戶端是連接服務(wù)端來刷新配置服務(wù)的。刷新之后如下那個(gè)就是剛剛修改的內(nèi)容
在使用Spring Config的時(shí)候遇到一些坑,在這里記錄下,順便梳理下這個(gè)使用。
Spring Cloud Config使用Spring Config來配合git做一個(gè)配置文件管理,需要一個(gè)Config的服務(wù)端和一個(gè)Config的客戶端,服務(wù)端主要是和git倉庫進(jìn)行一個(gè)連接,而config的客戶端是連接服務(wù)端來刷新配置服務(wù)的。
在Spring Cloud Config里面客戶端需要使用Spring4.0出現(xiàn)的一個(gè)注解@Value配合一起使用
需要引入一下幾個(gè)文件:
org.springframework.cloud spring-cloud-config-server org.springframework.cloud spring-cloud-config-server org.springframework.boot spring-boot-starter-web
新建一個(gè)application.yml
spring: application: name: microservice-server # name可以隨便填寫,代表這個(gè)服務(wù)的ServiceId cloud: config: server: git: uri: https://gitee.com/somersames/sprincloud-config.git # git的地址 username: yourname password: yourpassword server: port: 8099 # 服務(wù)開啟的端口
新建一個(gè)啟動(dòng)類:
@SpringBootApplication @EnableConfigServer public class ConfigApplication { public static void main(String[] args) { SpringApplication.run(ConfigApplication.class); } }
@EnableConfigServer代表的是將這個(gè)微服務(wù)作為Config的服務(wù)器
配置文件隨后在git服務(wù)器中新建幾個(gè)文件,并且按照peoperties的格式輸入內(nèi)容,例如profile=ad如下:
microservice-foo.properties microservice-foo-dev.properties microservice-foo-test.properties
分別代表的是默認(rèn)配置和開發(fā)環(huán)境以及測(cè)試環(huán)境的配置文件。
開啟服務(wù)端運(yùn)行服務(wù)端,然后訪問URL,其中URL的格式為localhost:port/默認(rèn)的項(xiàng)目名稱/分支.格式
這個(gè)URL的格式有很多種格式,具體的可以百度之后再自己嘗試
{"name":"microservice-foo","profiles":["dev.json"],"label":"master","version":"7ac2a341dfe7959b809b7d5ec70b980970208b91","state":null,"propertySources":[{"name":"https://gitee.com/somersames/sprincloud-config.git/microservice-foo.properties","source":{"profile":"default-1.0-changeewafasf"}}]}添加客戶端
客戶端不負(fù)責(zé)直接和git進(jìn)行通信,而是直接和Config的服務(wù)端進(jìn)行通信獲取最新的數(shù)據(jù)
新建一個(gè)工程并且添加一個(gè)配置文件bootstrap.yml,沒錯(cuò),是bootstrap.yml,然后再新建一個(gè)配置文件application.yml.
在bootstrap.yml中添加內(nèi)容:
spring: application: name: microservice-foo # 這里的名稱填寫項(xiàng)目的名稱,也就是在之前獲取的json里面的那個(gè)name cloud: config: uri: http://localhost:8099/ # 填寫Config服務(wù)端地址 profile: dev #項(xiàng)目環(huán)境 label: master #項(xiàng)目分支
在Application.yml里面添加內(nèi)容:
server: port: 8088 # 服務(wù)開啟的端口,任意即可
新建一個(gè)Controller
@RestController @RequestMapping("config") public class FeignController { @Value("${profile}") // 這里的profile不是隨便取得,這里取得是上述josn字符串里面的propertySources 下的 source 里面的那個(gè)鍵,在這個(gè)例子里面就是profile, private String profile; @RequestMapping(value = "/profile",method = RequestMethod.GET) public String hello(){ return this.profile; } }
其他無需改動(dòng),然后訪問localhost:8099/config/profile,可以看到如下結(jié)果:
刷新有時(shí)候需要比如動(dòng)態(tài)刷新git的最新配置的話,需要引入一個(gè)新的包:
org.springframework.boot spring-boot-starter-actuator 1.2.7.RELEASE
然后在Controller里面添加注解@RefreshScope,但是需要注意的是高版本需要在bootstrap.yml里面添加一個(gè)配置management:security:enabled: false否則會(huì)導(dǎo)致修改之后請(qǐng)求refresh刷新不出來。
自己通過git修改那個(gè)文件之后繼續(xù)如下操作:
然后POSTMAN發(fā)出一個(gè)POST請(qǐng)求,
如果在高版本里面不添加那個(gè)配置會(huì)導(dǎo)致刷新不出來,如果自己刷新不出來,請(qǐng)嘗試添加那個(gè)配置,另外那個(gè)額外添加的配置需要按照格式自己調(diào)整下。刷新之后如下:
那個(gè)cvcvcv就是剛剛修改的內(nèi)容
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/69191.html
摘要:接下來繼續(xù)介紹三種架構(gòu)模式,分別是查詢分離模式微服務(wù)模式多級(jí)緩存模式。分布式應(yīng)用程序可以基于實(shí)現(xiàn)諸如數(shù)據(jù)發(fā)布訂閱負(fù)載均衡命名服務(wù)分布式協(xié)調(diào)通知集群管理選舉分布式鎖和分布式隊(duì)列等功能。 SpringCloud 分布式配置 SpringCloud 分布式配置 史上最簡(jiǎn)單的 SpringCloud 教程 | 第九篇: 服務(wù)鏈路追蹤 (Spring Cloud Sleuth) 史上最簡(jiǎn)單的 S...
摘要:集群系統(tǒng)中的單個(gè)計(jì)算機(jī)通常稱為節(jié)點(diǎn),通常通過局域網(wǎng)連接,但也有其它的可能連接方式。這樣就高興了,可以專心寫自己的,前端就專門交由小周負(fù)責(zé)了。于是,小周和就變成了協(xié)作開發(fā)。都是為了項(xiàng)目正常運(yùn)行以及迭代。 一、前言 只有光頭才能變強(qiáng) 認(rèn)識(shí)我的朋友可能都知道我這陣子去實(shí)習(xí)啦,去的公司說是用SpringCloud(但我覺得使用的力度并不大啊~~)... 所以,這篇主要來講講SpringClou...
摘要:集群系統(tǒng)中的單個(gè)計(jì)算機(jī)通常稱為節(jié)點(diǎn),通常通過局域網(wǎng)連接,但也有其它的可能連接方式。這樣就高興了,可以專心寫自己的,前端就專門交由小周負(fù)責(zé)了。于是,小周和就變成了協(xié)作開發(fā)。都是為了項(xiàng)目正常運(yùn)行以及迭代。 一、前言 只有光頭才能變強(qiáng) 認(rèn)識(shí)我的朋友可能都知道我這陣子去實(shí)習(xí)啦,去的公司說是用SpringCloud(但我覺得使用的力度并不大啊~~)... 所以,這篇主要來講講SpringClou...
摘要:在艙壁模式中可以隔離每個(gè)遠(yuǎn)程資源,并分配各自的線程池,使之互不影響。 springcloud 總集:https://www.tapme.top/blog/detail/2019-02-28-11-33 本次用到全部代碼見文章最下方。 一、為什么要有客戶端彈性模式 ??所有的系統(tǒng)都會(huì)遇到故障,分布式系統(tǒng)單點(diǎn)故障概率更高。如何構(gòu)建應(yīng)用程序來應(yīng)對(duì)故障,是每個(gè)軟件開發(fā)人員工作的關(guān)鍵部分。但是通...
閱讀 3247·2021-09-22 15:58
閱讀 1717·2019-08-30 14:17
閱讀 1716·2019-08-28 18:05
閱讀 1505·2019-08-26 13:33
閱讀 683·2019-08-26 12:20
閱讀 606·2019-08-26 12:18
閱讀 3192·2019-08-26 11:59
閱讀 1401·2019-08-26 10:36