最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解使用spring cloud config來統(tǒng)一管理配置文件

 更新時間:2018年12月14日 14:09:28   作者:mazhen1991  
這篇文章主要介紹了詳解使用spring cloud config來統(tǒng)一管理配置文件,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

當(dāng)一個系統(tǒng)中的配置文件發(fā)生改變的時候,我們需要重新啟動該服務(wù),才能使得新的配置文件生效,spring cloud config可以實現(xiàn)微服務(wù)中的所有系統(tǒng)的配置文件的統(tǒng)一管理,而且還可以實現(xiàn)當(dāng)配置文件發(fā)生變化的時候,系統(tǒng)會自動更新獲取新的配置。

其架構(gòu)原理圖大致如下:

我們將配置文件放入git或者svn等服務(wù)中,通過一個Config Server服務(wù)來獲取git中的配置數(shù)據(jù),而我們需要使用的到配置文件的Config Client系統(tǒng)可以通過Config Server來獲取對應(yīng)的配置。

下面我們通過一個示例來演示一下config是如何被各個微服務(wù)系統(tǒng)獲取到的。

1.向git中上傳示例配置文件

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/taotao?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
jdbc.username=root
jdbc.password=root

文件名分別為:

microservice-dev.properties
microservice-production.properties
microservice-test.properties

對應(yīng)不同的三個環(huán)境。

該文件的命名規(guī)則是:{application}-{profile}.properties

2.搭建Config Server

2.1 添加依賴

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>1.5.4.RELEASE</version>
</parent>

<!-- 導(dǎo)入Spring Cloud的依賴管理 -->
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-dependencies</artifactId>
      <version>Dalston.SR3</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-eureka-server</artifactId>
      <exclusions>
        <exclusion>           
          <groupId>com.fasterxml.jackson.dataformat</groupId>
          <artifactId>jackson-dataformat-xml</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
  </dependency>
  <!-- 使用bus總線的方式通知所有的微服務(wù)配置文件需要刷新 -->
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-amqp</artifactId>
  </dependency>
</dependencies>

<build>
  <finalName>${project.artifactId}</finalName>
  <plugins>
    <!-- 資源文件拷貝插件 -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-resources-plugin</artifactId>
      <configuration>
        <encoding>UTF-8</encoding>
      </configuration>
    </plugin>
    <!-- java編譯插件 -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <encoding>UTF-8</encoding>
      </configuration>
    </plugin>
  </plugins>
</build>

2.2 編寫ConfigApplication

@EnableDiscoveryClient
@EnableConfigServer //開啟配置服務(wù)
@SpringBootApplication
public class ConfigApplication {

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

}

2.3 編寫yml配置文件

server:
 port: 6688 #服務(wù)端口

spring: 
 application: 
  name: microservice-config-server #指定服務(wù)名
 cloud: 
  config:
   server:
    git: #配置git倉庫地址
     uri: 具體的配置文件的git地址
     #username: 
     #password:
 rabbitmq: #RabbitMQ相關(guān)的配置
  host: 127.0.0.1
  port: 5672
  username: guest
  password: guest

eureka: 
 client:
  registerWithEureka: true #是否將自己注冊到Eureka服務(wù)中,默認(rèn)為true
  fetchRegistry: true #是否從Eureka中獲取注冊信息,默認(rèn)為true
  serviceUrl: #Eureka客戶端與Eureka服務(wù)端進(jìn)行交互的地址
   defaultZone: http://cloud:cloud@127.0.0.1:6868/eureka/
 instance: 
  prefer-ip-address: true #將自己的ip地址注冊到Eureka服務(wù)中
  ipAddress: 127.0.0.1
management:
 security:
  enabled: false #是否開啟actuator安全認(rèn)證

這是我們啟動該服務(wù),訪問該配置文件,訪問路徑示例如下(以該配置為例): 127.0.0.1:6688/microservice-dev.properties

訪問路徑的寫法也有多種方式:

/{application}/{profile}/[label]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
其中{label}是指分支,默認(rèn)是master。

3. Config Client的搭建

3.1 添加依賴

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

3.2 添加yml配置文件

eureka:
 client:
  serviceUrl: #Eureka客戶端與Eureka服務(wù)端進(jìn)行交互的地址
   defaultZone: http://cloud:cloud@127.0.0.1:6868/eureka/
spring:
 cloud:
  config:
   name: microservice #對應(yīng)的配置服務(wù)中的應(yīng)用名稱
   profile: dev #對應(yīng)配置服務(wù)中的{profile}
   label: master #對應(yīng)的分支
   discovery: 
    enabled: true #啟用發(fā)現(xiàn)服務(wù)功能
    service-id: microservice-config-server #指定服務(wù)名稱
 spring: 
 application: 
  name: itcasst-microservice-config-server #指定服務(wù)名
 cloud: 
  config:
   server:
    git: #配置git倉庫地址
     uri: http://172.16.55.138:10080/zhangzhijun/itcast-config-server.git
     #username: zhangzhijun
     #password: 123456
 rabbitmq: #RabbitMQ相關(guān)的配置
  host: 127.0.0.1
  port: 5672
  username: guest
  password: guest

注意,這里的yml配置文件是:bootstrap.yml,它和application.yml文件一樣,會被spring boot加載,但是bootstrap.yml會優(yōu)先加載。

3.3 在application.yml文件中添加配置

management:
 security:
  enabled: false #是否開啟actuator安全認(rèn)證

3.4 利用git的webhook實現(xiàn)實時更新通知

 

 

這個時候,我么通過@Value的方式,就可以獲取到對應(yīng)的配置了。

@RefreshScope
@Component//加入到Spring容器
public class JdbcConfigBean {

  @Value("${jdbc.url}")
  private String url;

  @Value("${jdbc.username}")
  private String username;

  @Value("${jdbc.password}")
  private String password;

  @Value("${jdbc.driverClassName}")
  private String driverClassName;

  public String getUrl() {
    return url;
  }

  public void setUrl(String url) {
    this.url = url;
  }

  public String getUsername() {
    return username;
  }

  public void setUsername(String username) {
    this.username = username;
  }

  public String getPassword() {
    return password;
  }

  public void setPassword(String password) {
    this.password = password;
  }

  public String getDriverClassName() {
    return driverClassName;
  }

  public void setDriverClassName(String driverClassName) {
    this.driverClassName = driverClassName;
  }

  @Override
  public String toString() {
    return "JdbcConfigBean [url=" + url + ", username=" + username
        + ", password=" + password + ", driverClassName="
        + driverClassName + "]";
  }

}

再次測試,我們發(fā)現(xiàn)當(dāng)我們修改了git中的配置文件的內(nèi)容之后,client系統(tǒng)中讀取到的屬性也是修改之后的了。

到此為止,其架構(gòu)變成如下:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • idea中配置tomcat啟動jsp項目過程

    idea中配置tomcat啟動jsp項目過程

    在IntelliJ IDEA中配置Tomcat并啟動JSP項目,首先需要在IDEA中安裝和配置Tomcat服務(wù)器,接著將項目與Tomcat關(guān)聯(lián),設(shè)置正確的部署路徑和端口號,通過這些步驟,可以實現(xiàn)JSP項目的本地運行和調(diào)試,使得開發(fā)和測試工作更加高效
    2024-10-10
  • Java JVM字節(jié)碼指令集總結(jié)整理與介紹

    Java JVM字節(jié)碼指令集總結(jié)整理與介紹

    本節(jié)將會著重介紹一下JVM中的指令集、Java是如何跨平臺的、JVM指令集參考手冊等內(nèi)容。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • Java判斷對象是否為空的四種方法小結(jié)

    Java判斷對象是否為空的四種方法小結(jié)

    這篇文章主要介紹了Java判斷對象是否為空的四種方法,判斷對象是否為空有多種方法,包括使用==或!=運算符直接比較對象與null,使用Objects.isNull()方法,以及用instanceof運算符或Optional類進(jìn)行更安全的空值處理,需要的朋友可以參考下
    2024-10-10
  • Java編寫超時工具類實例講解

    Java編寫超時工具類實例講解

    在本篇內(nèi)容里小編給大家分享的是一篇關(guān)于Java編寫超時工具類實例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-02-02
  • SpringBoot?項目中創(chuàng)建線程池

    SpringBoot?項目中創(chuàng)建線程池

    這篇文章主要介紹了SpringBoot?項目中創(chuàng)建線程池,文章基于Spring?Boot項目創(chuàng)建線程池ThreadPoolExecutor,需要的小伙伴可以參考一下
    2022-04-04
  • Java實現(xiàn)簡易拼圖游戲的方法詳解

    Java實現(xiàn)簡易拼圖游戲的方法詳解

    這篇文章主要介紹了如何利用Java語言實現(xiàn)簡易拼圖游戲,幫助大家更好的理解和使用Java開發(fā)游戲,感興趣的朋友可以跟隨小編一起學(xué)習(xí)一下
    2022-05-05
  • Spring中的Devtools源碼解析

    Spring中的Devtools源碼解析

    這篇文章主要介紹了Spring中的Devtools源碼解析,Spring中的Devtools是一個開發(fā)工具,旨在提高開發(fā)人員的生產(chǎn)力和開發(fā)體驗,它提供了一系列功能,包括自動重啟、熱部署、遠(yuǎn)程調(diào)試等,使開發(fā)人員能夠更快速地進(jìn)行代碼修改和調(diào)試,需要的朋友可以參考下
    2023-10-10
  • 最新Java?泛型中的通配符講解

    最新Java?泛型中的通配符講解

    Java的泛型是偽泛型,那是因為泛型信息只存在于代碼編譯階段,在生成的字節(jié)碼中是不包含泛型中的類型信息的,使用泛型的時候加上類型參數(shù),在編譯器編譯的時候會去掉,這個過程為類型擦除,這篇文章主要介紹了Java?泛型中的通配符,需要的朋友可以參考下
    2022-06-06
  • SpringCloud分布式項目下feign的使用示例詳解

    SpringCloud分布式項目下feign的使用示例詳解

    這篇文章主要介紹了SpringCloud分布式項目下feign的使用,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • Spring中@Value讀取properties作為map或list的操作

    Spring中@Value讀取properties作為map或list的操作

    這篇文章主要介紹了Spring中@Value讀取properties作為map或list的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評論

奉化市| 沾益县| 定州市| 盐津县| 来宾市| 兰坪| 旺苍县| 福泉市| 云和县| 怀化市| 青川县| 泌阳县| 饶平县| 普兰店市| 雷州市| 琼海市| 武平县| 南岸区| 海盐县| 鹿邑县| 额敏县| 玉门市| 二连浩特市| 贵南县| 潜江市| 西平县| 巨鹿县| 商城县| 蕉岭县| 静海县| 浮山县| 泽州县| 珲春市| 福建省| 盘山县| 新蔡县| 元氏县| 修文县| 托里县| 尉犁县| 高清|