使用 Apollo 为静态变量赋值的方法
Posted CG国斌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 Apollo 为静态变量赋值的方法相关的知识,希望对你有一定的参考价值。
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
但是,在使用 Apollo 的时候,我们可能会遇到这样的场景:
- 在类中,想要为静态属性赋值。
我们且不考虑什么时候会出现这样的需求,仅考虑如果有这样的需求,我们应该怎么处理?实际上,Apollo 仅支持直接为非静态属性赋值,因此当我们有这样的需求的时候,就需要我们变通一下,通过一些小技巧,来达成我们的目的了。
以下面的ApolloConfig
代码为例,我们分别为非静态属性name
和静态属性address
赋值:
@Configuration
@EnableApolloConfig
public class ApolloConfig
@Value("$csdn.name:NONE")
private String name;
private static String address;
@Value("$csdn.address:NONE")
public void setAddress(String param)
address = param;
public static String getAddress()
return address;
如上述代码所示,我们需要同时启用@Configuration
和@EnableApolloConfig
注解让 Apollo 配置生效,但如果我们使用 Spring Boot 或者 Spring Cloud 项目的话,一般都会将这两个注解加到统一的配置类或者启动类上面,因此就不过多的介绍了。
其中,我们使用@Value("$csdn.name:NONE")
为非静态属性name
赋值,并添加了默认值NONE
,即当我们没有在 Apollo 配置中心配置该属性值的时候,Apollo 会自动将NONE
作为默认值,赋值给name
属性。
而对于静态属性address
,我们直接使用@Value
注解是不生效的,但是我们可以将@Value("$csdn.address:NONE")
注解添加到非静态方法setAddress(String param)
上面,通过参数注入的时候,将 Apollo 配置的值传递给静态属性address
,然后我们在通过静态方法getAddress()
,获取静态属性address
的值。
值得注意的是,上面例子中使用的方法名是自定义的,不一定非得和参数名一致,根据需要自定义即可。
以上是关于使用 Apollo 为静态变量赋值的方法的主要内容,如果未能解决你的问题,请参考以下文章