1. 程式人生 > >pring-cloud-config+spring-cloud-bus(實現配置中心動態重新整理配置檔案)

pring-cloud-config+spring-cloud-bus(實現配置中心動態重新整理配置檔案)

  • 前置條件
  1. rabbitmq安裝
  2. 使用maven構建專案
  3. 安裝postman(方便傳送請求重新整理配置)
  4. 環境:springboot 2.0.6版本

 

  • 建立專案config-server
  1. 專案結構

  1. bootstrap.yml配置(本文件使用本地配置檔案,也可使用git和svn)

  1. 動態改變的配置檔案(自定義檔案中的值)

  1. pom.xml內容

<?xml version="1.0" encoding="UTF-8"?>

<project

xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

       <modelVersion>4.0.0</modelVersion>

       <groupId

>com.wei</groupId>

       <artifactId>config-server</artifactId>

       <version>0.0.1-SNAPSHOT</version>

       <packaging>jar</packaging>

       <name

>config-server</name>

       <description>Demo project for Spring Boot</description>

       <parent>

              <groupId>org.springframework.boot</groupId>

              <artifactId>spring-boot-starter-parent</artifactId>

              <version>2.0.6.RELEASE</version>

              <relativePath/> <!-- lookup parent from repository -->

       </parent>

       <properties>

              <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

              <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

              <java.version>1.8</java.version>

              <spring-cloud.version>Finchley.SR1</spring-cloud.version>

       </properties>

       <dependencies>

              <dependency>

                     <groupId>org.springframework.cloud</groupId>

                     <artifactId>spring-cloud-config-server</artifactId>

              </dependency>

              <dependency>

                     <groupId>org.springframework.boot</groupId>

                     <artifactId>spring-boot-starter-test</artifactId>

                     <scope>test</scope>

              </dependency>

              <dependency>

            <groupId>org.springframework.cloud</groupId>

            <artifactId>spring-cloud-starter-bus-amqp</artifactId>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-actuator</artifactId>

        </dependency>

       </dependencies>

       <dependencyManagement>

              <dependencies>

                     <dependency>

                            <groupId>org.springframework.cloud</groupId>

                            <artifactId>spring-cloud-dependencies</artifactId>

                            <version>${spring-cloud.version}</version>

                            <type>pom</type>

                            <scope>import</scope>

                     </dependency>

              </dependencies>

       </dependencyManagement>

       <build>

              <plugins>

                     <plugin>

                            <groupId>org.springframework.boot</groupId>

                            <artifactId>spring-boot-maven-plugin</artifactId>

                     </plugin>

              </plugins>

       </build>

</project>

 

  1. 啟動專案類注意事項

  • 建立專案config-client
  1. 專案結構

  1. bootstrap.yml配置

  1. pom.xml內容

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

       <modelVersion>4.0.0</modelVersion>

 

       <groupId>com.wei</groupId>

       <artifactId>config-client</artifactId>

       <version>0.0.1-SNAPSHOT</version>

       <packaging>jar</packaging>

 

       <name>config-client</name>

       <description>Demo project for Spring Boot</description>

 

       <parent>

              <groupId>org.springframework.boot</groupId>

              <artifactId>spring-boot-starter-parent</artifactId>

              <version>2.0.6.RELEASE</version>

              <relativePath/> <!-- lookup parent from repository -->

       </parent>

 

       <properties>

              <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

              <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

              <java.version>1.8</java.version>

              <spring-cloud.version>Finchley.SR1</spring-cloud.version>

       </properties>

 

       <dependencies>

              <dependency>

                     <groupId>org.springframework.boot</groupId>

                     <artifactId>spring-boot-starter-web</artifactId>

              </dependency>

      

              <dependency>

                     <groupId>org.springframework.cloud</groupId>

                     <artifactId>spring-cloud-starter-config</artifactId>

              </dependency>

 

              <dependency>

                     <groupId>org.springframework.boot</groupId>

                     <artifactId>spring-boot-starter-test</artifactId>

                     <scope>test</scope>

              </dependency>

             

              <dependency>

                     <groupId>org.springframework.cloud</groupId>

                     <artifactId>spring-cloud-starter-bus-amqp</artifactId>

              </dependency>

       </dependencies>

 

       <dependencyManagement>

              <dependencies>

                     <dependency>

                            <groupId>org.springframework.cloud</groupId>

                            <artifactId>spring-cloud-dependencies</artifactId>

                            <version>${spring-cloud.version}</version>

                            <type>pom</type>

                            <scope>import</scope>

                     </dependency>

              </dependencies>

       </dependencyManagement>

 

       <build>

              <plugins>

                     <plugin>

                            <groupId>org.springframework.boot</groupId>

                            <artifactId>spring-boot-maven-plugin</artifactId>

                     </plugin>

              </plugins>

       </build>

 

 

</project>

 

  1. service內容

  1. controller內容

 

 

  • 專案啟動執行實現動態重新整理配置
  1. 分別啟動config-server和config-client專案
  2. postman傳送請求訪問 ” http://19168.1.8:8080/hello”檢視返回值password

  1. 不重啟專案,直接改變cykp-dev.yml檔案中的password值

改之前:改之後

  1. postman傳送請求訪問 ” http://192.168.1.8:8888/actuator/bus-refresh”(不會返回任何值)

  1. 再次postman傳送請求訪問 ” http://192.168.1.8:8080/hello”檢視返回值password (發生了改變)

 

 

 

  • 遇坑總結
  1. 由於springboot2.0後改變很多導致網上攻略有很多坑
  2. 使用@value註解的類上需要添加註解@RefreshScope
  3. 傳送請求訪問 ” http://192.168.1.8:8888/actuator/bus-refresh”的需要以post請求傳送