前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 Apollo 为静态变量赋值的方法

使用 Apollo 为静态变量赋值的方法

作者头像
CG国斌
发布2021-12-07 17:49:27
2.4K0
发布2021-12-07 17:49:27
举报
文章被收录于专栏:维C果糖维C果糖

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

但是,在使用 Apollo 的时候,我们可能会遇到这样的场景:

  • 在类中,想要为静态属性赋值

我们且不考虑什么时候会出现这样的需求,仅考虑如果有这样的需求,我们应该怎么处理?实际上,Apollo 仅支持直接为非静态属性赋值,因此当我们有这样的需求的时候,就需要我们变通一下,通过一些小技巧,来达成我们的目的了。

以下面的ApolloConfig代码为例,我们分别为非静态属性name和静态属性address赋值:

代码语言:javascript
复制
@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的值。

值得注意的是,上面例子中使用的方法名是自定义的,不一定非得和参数名一致,根据需要自定义即可。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-12-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档