consul config spring cloud 2022

原理就是把项目中application.yml中的配置移到consul中进行远程管理

当项目启动的时候,去远程读取配置文件的内容,并加载。

项目中resource下面的application.yml删除

新建bootstrap.yml文件

spring:
  application:
    name: consulpayment
  cloud:
    consul:
      host: machine136
      port: 8500
      discovery:
        service-name: consulpayment
      config:
        format: yaml
        default-context: application #默认全局配置
        profile-separator: "-" #配置文件名称和环境的连接符,这里修改为- ,例如 ${spring.application.name}-${spring.profiles.active}
        data-key: data #这是config的数据key
        prefixes: config
        enabled: true
        import: optional:consul:machine136:8500

  profiles:
    active: dev

prefixes:对应consul配置的config目录名称

format:指定了consul 配置数据的格式 (输入data时右上角的选择)

default-context:application 代表项目的默认配置位于 {prefixes}/{default-context}/{data-key}

profile-separator:"-" 与

proeiles:

  active:dev

共同定义了环境配置文件的路径 为 {prefixes}/{spring.application.name}{profile-separator}{spring.profiles.active}/{data-key}

就是:config/consulpayment-dev/data

 

 

 

根目录新增

注意value 中不能用 tab 只能用空格!!!

注意value 中不能用 tab 只能用空格!!!

注意value 中不能用 tab 只能用空格!!!

否则报错

found character '\t(TAB)' that cannot start any token. (Do not use \t(TAB) for indentation)
in 'reader', line 2, column 1:
port: 8032

 

 

 

 

 

 

 

环境个性化配置

 

 

 

 

创建完成后的效果:

 

 IEDA 项目测试 注意增加两个starter : consul-config和bootstrap

<?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">
    <parent>
        <artifactId>springcloud19</artifactId>
        <groupId>com.hztech</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>config-consul-provider8031</artifactId>

    <properties>
        <maven.compiler.source>19</maven.compiler.source>
        <maven.compiler.target>19</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <!-- consul service -->

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

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

        </dependency>


        <!-- 公共的模块-->
        <dependency>
            <groupId>com.hztech</groupId>
            <artifactId>common-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>

        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>

        </dependency>
        <!--mysql-connector-java-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--jdbc-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

 

 

启动项目

 

 

服务成功注册

 

 测试功能

 

 项目结构

 

 

测试修改远程consul 中的 环境配置

 

 客户端程序检测到变化,但是没有自动生效,手动重启动项目后生效,

 

 但是作为值的更新在增加了 注解 @RefreshScope之后是可以实时同步的


 

 

 客户端刷新

 

posted on 2023-02-14 21:53  hztech  阅读(125)  评论(0编辑  收藏  举报

导航