动态配置

项目初始化

使用 jetbrain idea 等工具初始化一个 maven 项目

引入依赖

在上一步初始化好一个 maven 项目之后,我们在 pom.xml 中引入 Spring Cloud Tencent 相关依赖。

  • 引入 spring-cloud-tencent-dependencies 进行管理 Spring Cloud Tencent 相关组件的依赖版本。
  • 引入 spring-cloud-starter-tencent-polaris-config 实现 Spring Cloud 配置的动态管理。
  • 引入 spring-cloud-starter-bootstrap 以便可以支持 bootstrap.yml 的识别与加载
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.10</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    ...

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.tencent.cloud</groupId>
                <artifactId>spring-cloud-tencent-dependencies</artifactId>
                <version>1.7.0-2021.0.3</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2021.0.3</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        ...
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.tencent.cloud</groupId>
            <artifactId>spring-cloud-starter-tencent-polaris-config</artifactId>
        </dependency>

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

    ...
</project>

配置 bootstrap.yml

在 resources 目录下创建 bootstrap.yml 文件,并按照如下进行配置

.
├── java
│   └── com
│       └── example
│           └── springcloudtencentconfigdemo
│               └── SpringCloudTencentConfigDemoApplication.java
└── resources
    └── bootstrap.yml

配置 bootstrap.yml

server:
  port: 48084
spring:
  application:
    name: ConfigExample
  cloud:
    polaris:
      address: grpc://127.0.0.1:8091
      namespace: default # 设置配置中心命名空间
      config:
        auto-refresh: true # auto refresh when config file changed
        groups:
          - name: ${spring.application.name} # group name
            files: [ "config/user.properties" ]

示例代码

@SpringBootApplication
public class SpringCloudTencentConfigDemoApplication {

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

    @RestController
    @RefreshScope
    public static class UserController{

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

        @GetMapping(value = "/name")
        public String name() {
            return name;
        }
    }
}

创建配置分组以及配置文件

  • 创建配置分组 ConfigExample
  • 创建配置文件 config/user.properties

  • 编辑并发布配置文件 config/user.properties

验证

调用 curl –location –request GET ‘127.0.0.1:48084/name’ 查看返回值,预期返回 polarismesh

在线修改配置并发布

调用 curl –location –request GET ‘127.0.0.1:48084/name’ 查看返回值,预期返回 polarismesh@2021