如何使用
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列表
}
}