欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringCloud 如何提取公共配置

 更新時(shí)間:2021年07月16日 12:02:02   作者:指尖涼  
這篇文章主要介紹了SpringCloud 提取公共配置的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

SpringCloud 提取公共配置

在開(kāi)發(fā)微服務(wù)項(xiàng)目時(shí),通常會(huì)有很多服務(wù),此時(shí)會(huì)用配置中心來(lái)管理這些服務(wù)的配置,但有些服務(wù)可能會(huì)有相同的配置,比如數(shù)據(jù)源配置,eureka server注冊(cè)中心地址配置,actuator開(kāi)放端口配置等,很多的服務(wù)都需要,如果每個(gè)服務(wù)都寫(xiě)一份這樣相同的配置,服務(wù)一多,也挺麻煩的,并且如果要換一個(gè)數(shù)據(jù)庫(kù)或注冊(cè)中心,每個(gè)服務(wù)都得改,很麻煩,所以就需要將這些公共的配置提取出來(lái),放到公共的配置文件中,而這些服務(wù)去引用這些配置即可。

原本服務(wù)的配置文件可能是這樣的:

spring:
  application:
    name: eureka-client
  cloud:
    config:
      uri: http://localhost:8888  #配置中心地址
      label: master
      profile: dev

此時(shí)服務(wù)默認(rèn)會(huì)去config找名字為eureka-client-dev.yml的配置文件,這個(gè)配置文件里可能有eureka server地址,數(shù)據(jù)源配置,redis配置等,而另一個(gè)服務(wù)的配置文件可能也有這些相同的配置,這時(shí)就可以將這些相同的配置提取出來(lái),放到多個(gè)配置文件中,讓服務(wù)去讀取這些配置文件,比如可能有base-dev.yml來(lái)放各個(gè)服務(wù)公共的配置,datasource-dev.yml來(lái)存放數(shù)據(jù)源配置,而eureka-client-dev.yml是這個(gè)服務(wù)獨(dú)有的配置,這些配置文件都在config server中,則服務(wù)的工程中的配置文件則可以改成這樣:

spring:
  application:
    name: eureka-client
  cloud:
    config:
      uri: http://localhost:8888  #配置中心地址
      label: master
      profile: dev
      name: eureka-client,base,datasource

這樣eureka-client服務(wù)就會(huì)去配置中心讀取這3個(gè)配置文件,其他的服務(wù)如果需要,直接在自身的配置中在spring.cloud.config.name屬性中添加文件名即可,而不用再寫(xiě)相同的配置了。

SpringCloud config 多服務(wù)共享公共配置的解決

問(wèn)題描述

我們公司的項(xiàng)目是基于SpringCloud開(kāi)發(fā)的微服務(wù),用到了Spring-Cloud-Config作為微服務(wù)統(tǒng)一的配置中心,可以將散落在各個(gè)服務(wù)的配置進(jìn)行統(tǒng)一配置管理。

雖然配置中心將各個(gè)應(yīng)用的配置文件進(jìn)行了統(tǒng)一管理, 但是涉及到的一些公共配置,比如數(shù)據(jù)庫(kù)連接,redis連接,ftp連接等,依然還散落在各個(gè)應(yīng)用的配置文件中,并沒(méi)有抽取,我們需要根據(jù)環(huán)境的不同,而動(dòng)態(tài)修改它們,非常難以維護(hù)。導(dǎo)致每次涉及修改這些公共配置,就非常老火。

所以想到了利用公共文件方法,現(xiàn)在在這里簡(jiǎn)單闡述一下如何配置。(下面例子Spring-Cloud-Config-Server都是使用本地配置方式)。

經(jīng)過(guò)網(wǎng)上查閱資料,大部分都是采用方法一進(jìn)行配置的,那么我提供了一個(gè)方式二配置,也許會(huì)讓你眼前一亮,然后留下你的想法,如果是你去選擇,會(huì)選擇哪個(gè)方法呢?

方法一:

首先在配置中心的 config/ 目錄下創(chuàng)建一個(gè)公共配置文件common.yml, 然后在各個(gè)應(yīng)用下的 bootstrap.yml 文件中 spring.cloud.config.name 這里去配置多個(gè)配置文件名。

例如:

service-a 客戶端的 bootstap.yml:

spring:
  cloud:
    config:
      name: service-a, common

service-b 客戶端的 bootstap.yml:

spring:
  cloud:
    config:
      name: service-b, common

方法二:(比較推薦)

我們還記得springboot單體應(yīng)用的時(shí)候, 是如何抽離公共配置呢?答案是用spring.profiles.include 進(jìn)行引用其他公共配置文件。而且它的文件命名有個(gè)特點(diǎn),就是必須是application-開(kāi)頭的配置文件。

我們也會(huì)去想,像spring-cloud-config這樣的配置集中化,這樣的配置會(huì)生效嗎?

例如:

首先,我們?cè)?config/ 目錄下創(chuàng)建 application-common-dev.yml 配置文件

然后分別修改 service-a 和 service-b 在 config/ 目錄下的配置文件,配置如下:

service-a 客戶端的 service-a-dev.yml

spring:
  application:
    name: service-a
  #公共配置文件
  profiles:
    include: common-dev

service-b 客戶端的 service-b-dev.yml

spring:
  application:
    name: service-b
  #公共配置文件
  profiles:
    include: common-dev

分別啟動(dòng)各自的服務(wù),就可以看到服務(wù)啟動(dòng)成功。

那么,這兩種方式那種更好一些呢?

方法一:

缺點(diǎn):如果有新加的公共配置文件,需要去每個(gè)服務(wù)的bootstrap.yml都去修改一下。并且需要重新發(fā)布jar包。

方法二:

優(yōu)點(diǎn):配置可以外部化,而且修改配置文件,不需要單獨(dú)發(fā)布jar包。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Springboot?maven項(xiàng)目配置文件覆蓋問(wèn)題的處理

    Springboot?maven項(xiàng)目配置文件覆蓋問(wèn)題的處理

    這篇文章主要介紹了Springboot?maven項(xiàng)目配置文件覆蓋問(wèn)題的處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • javacv開(kāi)發(fā)詳解之調(diào)用本機(jī)攝像頭視頻

    javacv開(kāi)發(fā)詳解之調(diào)用本機(jī)攝像頭視頻

    這篇文章主要介紹了javacv開(kāi)發(fā)詳解之調(diào)用本機(jī)攝像頭視頻,對(duì)javacv感興趣的同學(xué),可以參考下
    2021-04-04
  • 解決Java包裝類(lèi)比較時(shí)遇到的問(wèn)題

    解決Java包裝類(lèi)比較時(shí)遇到的問(wèn)題

    所謂包裝類(lèi)的作用就是將原始數(shù)據(jù)類(lèi)型轉(zhuǎn)換成引用數(shù)據(jù)類(lèi)型,下面這篇文章主要給大家介紹了關(guān)于在Java包裝類(lèi)比較時(shí)遇到的問(wèn)題的解決方法,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-09-09
  • 你應(yīng)該知道的java中的5個(gè)注解

    你應(yīng)該知道的java中的5個(gè)注解

    自Java5.0版本引入注解之后,它就成為了Java平臺(tái)中非常重要的一部分。開(kāi)發(fā)過(guò)程中,我們也時(shí)常在應(yīng)用代碼中會(huì)看到像@Override,@Deprecated這樣的注解。下面小編和大家來(lái)一起學(xué)習(xí)一下吧
    2019-05-05
  • Java消息隊(duì)列RabbitMQ入門(mén)詳解

    Java消息隊(duì)列RabbitMQ入門(mén)詳解

    這篇文章主要介紹了Java消息隊(duì)列RabbitMQ入門(mén)詳解,RabbitMQ是使用Erlang語(yǔ)言開(kāi)發(fā)的開(kāi)源消息隊(duì)列系統(tǒng),基于AMQP協(xié)議 來(lái)實(shí)現(xiàn),AMQP的主要特征是面向消息、隊(duì)列、路由(包括點(diǎn)對(duì)點(diǎn)和發(fā)布 /訂閱)、可靠性、安全,需要的朋友可以參考下
    2023-07-07
  • mybatisplus?實(shí)現(xiàn)接口MetaObjectHandler自動(dòng)填充字段值

    mybatisplus?實(shí)現(xiàn)接口MetaObjectHandler自動(dòng)填充字段值

    MetaObjectHandler是MyBatis-Plus提供的一個(gè)接口,本文主要介紹了mybatisplus?實(shí)現(xiàn)接口MetaObjectHandler自動(dòng)填充字段值,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Eclipse中引入com.sun.image.codec.jpeg包報(bào)錯(cuò)的完美解決辦法

    Eclipse中引入com.sun.image.codec.jpeg包報(bào)錯(cuò)的完美解決辦法

    Java開(kāi)發(fā)中對(duì)圖片的操作需要引入 com.sun.image.codec.jpeg,但有時(shí)引入這個(gè)包會(huì)報(bào)錯(cuò),利用下面的操作可以完成解決這個(gè)問(wèn)題
    2018-02-02
  • java快速解析路徑中的參數(shù)(&與=拼接的參數(shù))

    java快速解析路徑中的參數(shù)(&與=拼接的參數(shù))

    這篇文章主要介紹了java快速解析路徑中的參數(shù)(&與=拼接的參數(shù)),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-02-02
  • 詳解java倒計(jì)時(shí)三種簡(jiǎn)單實(shí)現(xiàn)方式

    詳解java倒計(jì)時(shí)三種簡(jiǎn)單實(shí)現(xiàn)方式

    這篇文章主要介紹了詳解java倒計(jì)時(shí)三種簡(jiǎn)單實(shí)現(xiàn)方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • springboot將mybatis升級(jí)為mybatis-plus的實(shí)現(xiàn)

    springboot將mybatis升級(jí)為mybatis-plus的實(shí)現(xiàn)

    之前項(xiàng)目工程用的是mybatis,現(xiàn)在需要將其替換為mybatis-plus,本文主要介紹了springboot將mybatis升級(jí)為mybatis-plus的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09

最新評(píng)論