Skip to content

qiaolin-li/apollo-hotupdate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

apollo-hotupdate

apollo配置中心属性热更新

在使用Apollo配置中心的时候,我们时常需要自己写热更新属性的代码!好像Apollo也提供了热更新,但是只支持 @Value注解的。然后我自己写了一个自动更新的组件 apollo-hotupdate,暂时只支持spring boot,下面带大家使用一下

github仓库:https://github.com/qiaolin-li/apollo-hotupdate

1、集成

使用maven只需要引入下面的坐标:

<dependency>
    <groupId>com.github.qiaolin</groupId>
    <artifactId>apollo-hotupdate</artifactId>
    <version>1.0.3</version>
</dependency>

2、使用

配置项

# apollo命名空间,数组,多个以","分割, 默认 application
apollo.hot.update.namespaces= application

# ConfigurationProperties 注解所在的类属性为对象类型,则会递归解析,这里为递归的层数
# 默认为 5层
apollo.hot.update.recursion-level= 5 

# 那些注解要被热更新,推荐配置一下,默认 ** 即所有配置
# 如果你的注解都为 xxx. 开头,那么你配置 xxx.**即可
# 支持多个值,以","分割,例如:com.github.**, com.gitlab.**
apollo.hot.update.update-keys= com.github.**

目前支持的注解:

@Value 注解
@Component
public class MyService {

    @Value(value = "${com.github.qiaolin.a.b}")
    private String b;
    
}
@ConfigurationProperties 注解
/**
 * 测试基本类型
 * @author qiaolin
 */
 
@Getter
@Setter
@ConfigurationProperties(prefix = "com.github.qiaolin")
public class MyProperties {

    @DefaultValue("1")
    private Integer prpo1;

//    @DateFormat("yyyy-MM-dd HH:mm:ss") 定制格式化,一般用不到
    private Date prpo10;

}
@HotUpdateField 注解(自定义)
@Component
public class MyService {

   @HotUpdateFiled(value = "com.github.qiaolin.day")
   private int day;

   @HotUpdateFiled(prefix = "com.github.qiaolin", value = "a")
   private String a;
   
}

注意的是,这个自定义注解在spring 启动时不会给你装配值...,因为是自定义的,但是在在apollo修改值时可以同步上,现在我也不知道他能在哪里被用上...,或许有某种场景需要默认值写死到这个属性,然后偶尔需要修改,但是希望他重启后还是回到那个原来的值...

目前支持热更新的类型:

    	Byte、    byte、    Byte[]、    byte   
        Character、    char、    Character[]、    char   
        Short、    short、    Short[]、    short   
        Integer、    int、    Integer[]、    int   
        Float、    float、    Float[]、    float   
        Long、    long、    Long[]、    long   
        Double、    double、    Double[]、    double   
        Boolean、    boolean、    Boolean[]、    boolean   
        String、    String[]   
        Enum、	Enum[]
       

默认值

注意:默认值都是String格式的,值一定要和自己的类型匹配

使用@Value注解时,写到:后面

    @Value(value = "${com.github.qiaolin.a.b:hehe}")
    private String b;

使用@ConfigurationProperties注解时

配合自定义注解 @DefaultValue("1")

@ConfigurationProperties(prefix = "com.github.qiaolin")
public class MyProperties {

    @DefaultValue("1")
    private Integer prpo1;

}

使用@HotUpdateField注解

利用其 defaultValue 属性即可

    @HotUpdateFiled(value = "com.github.qiaolin.day", defaultValue = "9")
    private int day;

其他: 参考Demo : https://github.com/qiaolin-li/apollo-hotupdate/tree/master/apollo-hotupdate-demo

About

apollo配置中心属性热更新

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages