springcloud config配置中心


配置中心簡介

config server 可以從本地或git倉庫里讀取配置,配置可以放置在一個module里進行管理。

配置高可用config server

把config-server 配置到eureka-server服務里統一管理,可以把config-server配置成集群:

新建config server 模塊

a)引入依賴

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

 

b)配置文件 application.yml

spring:
  cloud:
    config:
      server:
        native:
          search-locations: classpath:/shared
#          search-locations: file:E://Java/本地磁盤
  profiles:
     active: native
  application:
    name: config-server

#把實例注冊到eureka server服務里管理
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

 

在項目resource里建shared文件夾,並新建文件config-client-dev.yml,添加如下內容

server:
  port: 8783

foo: foo version 1

 

c)啟動類添加注解

@EnableConfigServer

 

d) 共用的配置,即文件可以繼承

我們在遠程倉庫中創建了三個對應不同環境的配置文件user-service-dev.yml,user-service-test.yml,user-service-prod.yml,假如在不同環境下有很多共用的配置,我們可以再創建一個user-service.yml用來存放共同配置,springcloud-config取配置時,會將你的對應環境配置與user-service.yml合並后再返回。application.yml文件和所有的文件進行合並后再返回。

新建config client 模塊

a)引入依賴

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

 

b)配置文件,bootstrap.yml

spring:
  application:
    name: config-client
  cloud:
    config:
      fail-fast: true
      discovery:
        enabled: true
        serviceId: config-server
  profiles:
    active: dev

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

 

根據{spring.application.name}-{profiles.active}名稱到config-server 模塊shared目錄下查詢配置文件

c)啟動類不用添加其它注解

d)使用,和本地配置使用一樣

@SpringBootApplication
@RestController
@EnableEurekaClient
public class ConfigClientApplication {

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

    @Value("${foo}")
    String foo;
    @RequestMapping(value = "/foo")
    public String hi(){
        return foo;
    }
}

 

測試

在瀏覽器輸入地址:http://localhost:8783/foo

使用Spring Cloud Bus刷新配置

如果我們想修改配置文件,又不用重啟項目立即生效,則需要用到spring cloud bus刷新配置。

修改config client模塊

只需求修改config-client模塊,即可實現動態刷新

a)引入依賴

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

 

b)修改配置文件,添加如下內容,要先安裝RabbitMQ ,

  rabbitmq:
    host: localhost
    port: 15672
    username: guest
    password: guest
    publisher-confirms: true
    virtual-host: /

#先把安全策略設置為false management: security: enabled:
false

 

c)在使用配置的類上添加 @RefreshScope注解

@RestController
@RefreshScope
public class ConfigClientApplication {
    @Value("${foo}")
    String foo;
    @RequestMapping(value = "/foo")
    public String hi(){
        return foo;
    }
}

 

測試

修改config-server項目 目錄shared下的config-client-dev.yml配置文件內容,然后 發送 post請求 http://localhost:8781/bus/refresh,再http://localhost:8783/foo,你會發現配置文件修改內容已生效


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM