系统配置功能使用说明

用于在前端展示特定的配置,修改完成后能实时保存到nacos,并由nacos推送到服务端,使得服务的配置立即生效,不需要重启服务。同时也支持,在一些需要重启的配置,例如@Conditional注解的类,可以做到自动重启服务,使得配置生效。 支持版本:2.5.1

如何使用
1. 引入pom依赖
<dependency>
    <groupId>com.hvisions</groupId>
    <artifactId>hvisions-common-springboot-starter</artifactId>
    <version>3.2.0</version>
</dependency>

主pom文件修改jackson版本:

    <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>Hoxton.SR9</spring-cloud.version>
        <maven.test.skip>true</maven.test.skip>
       <!-jackson版本->
        <jackson-bom.version>2.14.0</jackson-bom.version>
    </properties>
2. 代码编写
@ConfigurationProperties类为例
package com.hvisions.framework.configuration;

import com.hvisions.common.config.dynamic.annotation.DynamicConfig;
import com.hvisions.common.config.dynamic.annotation.PropertyDesc;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.List;


@ConfigurationProperties(prefix = "user.config")
@DynamicConfig
@Component
@Data
public class UserConfigProperty {

    @PropertyDesc(description = "用户名",group = "demo演示配置",notes = "用户名")
    private String userName;


    @PropertyDesc(description = "地址",group = "demo演示配置")
    private String address;

    @PropertyDesc(description = "年龄",group = "demo演示配置")
    private Integer age;

    @PropertyDesc(description = "编程语言",group = "demo演示配置",notes = "多个编程语言逗号隔开")
    private List<String> codeLanguages;

    @PropertyDesc(description = "性别",group =  "demo演示配置",options = {"男","女"})
    private String gender;
}

启动服务,调用服务接口查看是否成功:
页面效果:
显示UserConfigProperty配置内容一致
注意: 此功能刷新服务列表会耗时较久,所以会有5分钟缓存时间。如果在nacos直接更改配置,此页面可能会与nacos显示不一致。
修改配置,后页面显示:
nacos配置:
3. 代码配置说明
使用的注解及说明:
注解说明
@DynamicConfig标识这个类需要将配置返回到前端配置页面
@PropertyDesc属性说明,包括配置项名称,是否暴露,可选项,分组名称,以及备注信息
可以配置的类如下表所示:
类注解类型说明
@ConfigurationProperties不需要重启服务
@RefreshScope  + @Value不需要重启服务
@Value需要重启服务(自动,无须手动操作)
@ConditionalOnProperty需要重启服务(自动,无须手动操作)
预留扩展点:
   //实现AdditionalExtractor接口,注入到IOC容器
  @Component
  public class MyExtractor implements AdditionalExtractor{

     @Override
     public List<ConfigProperty> getConfigProperty() throws Exception {
         //返回自定义的 ConfigProperty列表
      }
 }
2023-04-27
0