Spring Cloud Config Server 簡單使用

新建 Config Server

添加依賴

在 pom.xml添加上述依賴:git

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency> <!-- 這裏的版本是經過 spring cloud 大版原本獲取的 -->
複製代碼

配置文件

配置 application.yml 文件:github

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8000/eureka/
spring:
  application:
    name: config
  cloud:
    config:
      server:
# 這裏採用的是git的配置中心,也能夠使用是svn的
       git:
          uri: https://github.com/WengBerg/studyspringcloud-config-repo.git
          username:
          password:
# 本地保存地址
          basedir: E:/ideaIU-2018.2.4.win/workspace/studyspringcloud/config/basedir

server:
  port: 8899
複製代碼

啓動類添加註解

@SpringBootApplication
@EnableDiscoveryClient // 註冊到eureka
@EnableConfigServer // 配置中心
public class ConfigApplication {

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

配置 Config Client

添加依賴

在 pom.xml添加上述依賴:web

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-client</artifactId>
        </dependency> <!-- 這裏的版本是經過 spring cloud 大版原本獲取的 -->
複製代碼

配置文件

配置 bootstrap.yml 文件:spring

這裏採用 bootstrap 的方式是由於須要一開始就去配置中心獲取配置文件bootstrap

eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:8000/eureka/
spring:
  application:
    name: order
  cloud:
    config:
      discovery:
        enabled: true
        service-id: config # 這個是配置中心的應用名,經過 eureka 去找
        # 在這裏部分環境參數我未填寫,有須要的自行填寫
server:
  port: 9500
複製代碼

如何自動刷新配置

Config Server 修改

添加依賴

在 pom.xml 中添加依賴:bash

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency> <!-- 這裏注意 spring cloud 的大版本,有部分版本有bug。還有須要注意 spring cloud 的版本須要和 spring boot 的版本相對應 -->
複製代碼

修改配置

修改 application.yml 配置:app

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8000/eureka/
spring:
  rabbitmq: # 這裏使用的是 rabbitmq,用於通知更新
    host: 127.0.0.1
    port: 5672
    username: guest
    password: guest
  application:
    name: config
  cloud:
    config:
      server:
# 這裏採用的是git的配置中心,也能夠使用是svn的
       git:
          uri: https://github.com/WengBerg/studyspringcloud-config-repo.git
          username:
          password:
# 本地保存地址
          basedir: E:/ideaIU-2018.2.4.win/workspace/studyspringcloud/config/basedir

server:
  port: 8899
management: # 這裏是將映射暴露出來。
# 使能夠訪問http://[配置中心域名或IP]:[端口號]/actuator/bus-refresh 刷新配置
  endpoints:
    web:
      exposure:
        include: "*"
複製代碼

Config Client 修改

添加依賴

在 pom.xml 中添加依賴:ide

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency> <!-- 這裏注意 spring cloud 的大版本,有部分版本有bug。還有須要注意 spring cloud 的版本須要和 spring boot 的版本相對應 -->
複製代碼

添加註解

在代碼中有在配置文件中獲取值的地方須要添加 @RefreshScope 註解。舉例:svn

@RestController
@RefreshScope
public class ConfigTestController {

    @Value("${person.name}")
    private String name;

    @GetMapping("configTest")
    public String configTest() {
        return name;
    }
}
複製代碼

更新操做

  • 更新git上面的配置文件
  • 訪問 http://[配置中心域名或IP]:[端口號]/actuator/bus-refresh

如此便能刷新配置ui

但能不能更加人性化呢?好比 push 的就自動更新,實際上是能夠作到的。下面就來說一下實現方式:

  • 在 git 上設置 Webhooks

如何設置 Webhooks ? 這裏我是用的 github 中的 Webhooks

Webhooks
上面就是我設置的 Webhooks,下面添加的依賴就是用來實現 Webhooks。而且在這裏我一個映射軟件來映射到內網。

  • 在 Config Server 中的 pom.yml 中添加依賴:
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-monitor</artifactId>
        </dependency>
複製代碼
相關文章
相關標籤/搜索