在分布式配置中心Apollo 配置String、Map和List以及设置默认值

摘要:在分布式配置中心Apollo 中,配置String、Map和List等类型的信息,同时设置默认值。

综述

  随着业务需求的变更,需要在Apollo中配置一个Map<String, List>类型的变量用于标志客户信息,诸如住址、手机号和身份证号码等,而通常需要配置的就是简简单单的String、Integer等类型变量,故这里梳理一下配置String、Map和List等类型信息的方法,提升产出比。

String

  Apollo配置中心设置String的方法:

apollo.wiener.strDemo = 楼兰胡杨

  其中,key是apollo.wiener.strDemo,value是楼兰胡杨。java代码中使用@Value注解获取的方式:

@Value("${apollo.wiener.strDemo:wiener}")
private String strDemo;

其中,其中英文冒号后面是默认值,值为wiener

List

  Apollo配置中心设置List的方法:

apollo.wiener.listDemo = 楼兰胡杨,张三,李四

  其中,key是apollo.wiener.listDemo,value是【楼兰胡杨,张三,李四】。java代码中使用@Value注解获取,使用方法:

@Value("#{'${apollo.wiener.listDemo:wiener,张三}'.split(',')}")
private List<String> listDemo;

其中,默认值为【wiener,张三】,配置时不需要加引号。语法分析:先通过上一节介绍的${apollo.wiener.listDemo}得到字符串【楼兰胡杨,张三,李四】,然后,借助#{楼兰胡杨,张三,李四.split(',')}把字符串基于分隔符英文逗号分隔为数组,赋值给listDemo;其中,分隔符显然可以自定义。

Map

  Apollo配置中心设置Map的方法:

apollo.wiener.mapDemo = {group1:'楼兰胡杨,张三,李四',group2:'王五,店小二'}

  java代码中获取方式:

@Value("#{${apollo.wiener.mapDemo:{group0:'defaultName,Wiener'}}}")
private Map<String, String> mapParam;

  其中,默认值为{group0:'defaultName,Wiener'}。value可以是Integer等类型。示例中value(如楼兰胡杨,张三,李四)明显是一个需要加引号的数组,故此 Map 变量mapParam的类型可以转换成Map<String, List<String>>

@Value("#{'${apollo.wiener.mapDemo}'.split(',')}")
private Map<String, List<String>> mapAndList;

  通过类型转换,是不是减少了开发工作量?可以卷起来了。如果Value需要定义成一个Map类型的值,应该怎么处理呢?

  Apollo中配置方法:

apollo.wiener.innerMapDemo = {key1:{innerKey1_1:'innerValue1_1',innerKey1_2:'innerValue1_2'},key2:{innerKey2_1:'innerValue2_1',innerKey2_2:'innerValue2_2'}}

  java代码中获取方式:

@Value("#{${apollo.wiener.innerMapDemo}}")
private Map<String, Map<String, String>> innerMap;

  温馨提示:key和value都可以不用单引号,但若key或者value中包含_或-等特殊字符,则需要加上单引号,避免出错。

小结

  三人行必有我师焉!老铁们,因楼兰胡杨能力有限,文中难免出现瑕疵,如果发现bug或者有更好的idea,请在文章下方留言!

posted @   楼兰胡杨  阅读(8980)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
历史上的今天:
2021-09-30 JSON格式化和压缩成一行
点击右上角即可分享
微信分享提示