apollo-hotupdate-project

apollo property hotupdate

License

License

Categories

Categories

Apollo Container Microservices
GroupId

GroupId

com.github.qiaolin
ArtifactId

ArtifactId

apollo-hotupdate-project
Last Version

Last Version

1.0.3
Release Date

Release Date

Type

Type

pom
Description

Description

apollo-hotupdate-project
apollo property hotupdate
Project URL

Project URL

https://github.com/qiaolin-li/apollo-hotupdate
Source Code Management

Source Code Management

https://github.com/qiaolin-li/apollo-hotupdate.git

Download apollo-hotupdate-project

How to add to project

<!-- https://jarcasting.com/artifacts/com.github.qiaolin/apollo-hotupdate-project/ -->
<dependency>
    <groupId>com.github.qiaolin</groupId>
    <artifactId>apollo-hotupdate-project</artifactId>
    <version>1.0.3</version>
    <type>pom</type>
</dependency>
// https://jarcasting.com/artifacts/com.github.qiaolin/apollo-hotupdate-project/
implementation 'com.github.qiaolin:apollo-hotupdate-project:1.0.3'
// https://jarcasting.com/artifacts/com.github.qiaolin/apollo-hotupdate-project/
implementation ("com.github.qiaolin:apollo-hotupdate-project:1.0.3")
'com.github.qiaolin:apollo-hotupdate-project:pom:1.0.3'
<dependency org="com.github.qiaolin" name="apollo-hotupdate-project" rev="1.0.3">
  <artifact name="apollo-hotupdate-project" type="pom" />
</dependency>
@Grapes(
@Grab(group='com.github.qiaolin', module='apollo-hotupdate-project', version='1.0.3')
)
libraryDependencies += "com.github.qiaolin" % "apollo-hotupdate-project" % "1.0.3"
[com.github.qiaolin/apollo-hotupdate-project "1.0.3"]

Dependencies

compile (1)

Group / Artifact Type Version
org.projectlombok : lombok jar 1.16.22

Project Modules

  • apollo-hotupdate
  • apollo-hotupdate-demo

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

Versions

Version
1.0.3
1.0.1