使用 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
的值。
值得注意的是,上面例子中使用的方法名是自定义的,不一定非得和参数名一致,根据需要自定义即可。
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击