spring-cloud-config+spring-cloud-bus(实现配置中心动态刷新配置文件)

  • 前置条件
  1. rabbitmq安装
  2. 使用maven构建项目
  3. 安装postman(方便发送请求刷新配置)
  4. 环境:springboot 2.0.6版本

 

  • 创建项目config-server
  1. 项目结构

spring-cloud-config+spring-cloud-bus(实现配置中心动态刷新配置文件)_第1张图片

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

spring-cloud-config+spring-cloud-bus(实现配置中心动态刷新配置文件)_第2张图片

  1. 动态改变的配置文件(自定义文件中的值)

spring-cloud-config+spring-cloud-bus(实现配置中心动态刷新配置文件)_第3张图片

  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.0modelVersion>

       <groupId>com.weigroupId>

       <artifactId>config-serverartifactId>

       <version>0.0.1-SNAPSHOTversion>

       <packaging>jarpackaging>

       <name>config-servername>

       <description>Demo project for Spring Bootdescription>

       <parent>

              <groupId>org.springframework.bootgroupId>

              <artifactId>spring-boot-starter-parentartifactId>

              <version>2.0.6.RELEASEversion>

              <relativePath/>

       parent>

       <properties>

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

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

              <java.version>1.8java.version>

              <spring-cloud.version>Finchley.SR1spring-cloud.version>

       properties>

       <dependencies>

              <dependency>

                     <groupId>org.springframework.cloudgroupId>

                     <artifactId>spring-cloud-config-serverartifactId>

              dependency>

              <dependency>

                     <groupId>org.springframework.bootgroupId>

                     <artifactId>spring-boot-starter-testartifactId>

                     <scope>testscope>

              dependency>

              <dependency>

            <groupId>org.springframework.cloudgroupId>

            <artifactId>spring-cloud-starter-bus-amqpartifactId>

        dependency>

        <dependency>

            <groupId>org.springframework.bootgroupId>

            <artifactId>spring-boot-starter-actuatorartifactId>

        dependency>

       dependencies>

       <dependencyManagement>

              <dependencies>

                     <dependency>

                            <groupId>org.springframework.cloudgroupId>

                            <artifactId>spring-cloud-dependenciesartifactId>

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

                            <type>pomtype>

                            <scope>importscope>

                     dependency>

              dependencies>

       dependencyManagement>

       <build>

              <plugins>

                     <plugin>

                            <groupId>org.springframework.bootgroupId>

                            <artifactId>spring-boot-maven-pluginartifactId>

                     plugin>

              plugins>

       build>

project>

 

  1. 启动项目类注意事项

spring-cloud-config+spring-cloud-bus(实现配置中心动态刷新配置文件)_第4张图片

  • 创建项目config-client
  1. 项目结构

spring-cloud-config+spring-cloud-bus(实现配置中心动态刷新配置文件)_第5张图片

  1. bootstrap.yml配置

spring-cloud-config+spring-cloud-bus(实现配置中心动态刷新配置文件)_第6张图片

  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.0modelVersion>

 

       <groupId>com.weigroupId>

       <artifactId>config-clientartifactId>

       <version>0.0.1-SNAPSHOTversion>

       <packaging>jarpackaging>

 

       <name>config-clientname>

       <description>Demo project for Spring Bootdescription>

 

       <parent>

              <groupId>org.springframework.bootgroupId>

              <artifactId>spring-boot-starter-parentartifactId>

              <version>2.0.6.RELEASEversion>

              <relativePath/>

       parent>

 

       <properties>

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

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

              <java.version>1.8java.version>

              <spring-cloud.version>Finchley.SR1spring-cloud.version>

       properties>

 

       <dependencies>

              <dependency>

                     <groupId>org.springframework.bootgroupId>

                     <artifactId>spring-boot-starter-webartifactId>

              dependency>

      

              <dependency>

                     <groupId>org.springframework.cloudgroupId>

                     <artifactId>spring-cloud-starter-configartifactId>

              dependency>

 

              <dependency>

                     <groupId>org.springframework.bootgroupId>

                     <artifactId>spring-boot-starter-testartifactId>

                     <scope>testscope>

              dependency>

             

              <dependency>

                     <groupId>org.springframework.cloudgroupId>

                     <artifactId>spring-cloud-starter-bus-amqpartifactId>

              dependency>

       dependencies>

 

       <dependencyManagement>

              <dependencies>

                     <dependency>

                            <groupId>org.springframework.cloudgroupId>

                            <artifactId>spring-cloud-dependenciesartifactId>

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

                            <type>pomtype>

                            <scope>importscope>

                     dependency>

              dependencies>

       dependencyManagement>

 

       <build>

              <plugins>

                     <plugin>

                            <groupId>org.springframework.bootgroupId>

                            <artifactId>spring-boot-maven-pluginartifactId>

                     plugin>

              plugins>

       build>

 

 

project>

 

  1. service内容

spring-cloud-config+spring-cloud-bus(实现配置中心动态刷新配置文件)_第7张图片

  1. controller内容

spring-cloud-config+spring-cloud-bus(实现配置中心动态刷新配置文件)_第8张图片

 

 

  • 项目启动运行实现动态刷新配置
  1. 分别启动config-server和config-client项目
  2. postman发送请求访问 ” http://19168.1.8:8080/hello”查看返回值password

spring-cloud-config+spring-cloud-bus(实现配置中心动态刷新配置文件)_第9张图片

  1. 不重启项目,直接改变cykp-dev.yml文件中的password值

改之前:spring-cloud-config+spring-cloud-bus(实现配置中心动态刷新配置文件)_第10张图片改之后spring-cloud-config+spring-cloud-bus(实现配置中心动态刷新配置文件)_第11张图片

  1. postman发送请求访问 ” http://192.168.1.8:8888/actuator/bus-refresh”(不会返回任何值)

spring-cloud-config+spring-cloud-bus(实现配置中心动态刷新配置文件)_第12张图片

  1. 再次postman发送请求访问 ” http://192.168.1.8:8080/hello”查看返回值password (发生了改变)

spring-cloud-config+spring-cloud-bus(实现配置中心动态刷新配置文件)_第13张图片

 

 

 

  • 遇坑总结
  1. 由于springboot2.0后改变很多导致网上攻略有很多坑
  2. 使用@value注解的类上需要添加注解@RefreshScope
  3. 发送请求访问 ” http://192.168.1.8:8888/actuator/bus-refresh”的需要以post请求发送

 

 

你可能感兴趣的:(springCloud)