Apollo配置语法——Apollo配置List和Map以及组合应用——非常详细

2023-05-16

文章目录

          • 1、正常的list和map形式
          • 2、mapAndMap形式、mapAndList形式
          • 3、属性前缀注入
          • 4、全部代码

场景:
最近使用老东家携程的开源软件Apollo配置中心的时候,需要一个map中的value也是map,但是网上找了半天并没有相关的文章。经过摸索,现记录如下:

1、正常的list和map形式

Apollo配置中心

apollo.map = {key1:"value1",key2:"value2",key3:"value3"}
apollo.list = "key1,key2,key3"

java代码中获取方式

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

    @Value("#{${apollo.list}}")
    private List<String> list;
2、mapAndMap形式、mapAndList形式

Apollo配置中心

apollo.mapAndMap = {key1:{subKey1_1:"subValue1_1",subKey1_2:"subValue1_2"},key2:{subKey2_1:"subValue2_1",subKey2_2:"subValue2_2"}}
apollo.mapAndList = {key1:"value1,value2,value3",key2:"value4,value5,value6"}

java代码中获取方式

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

    @Value("#{${apollo.mapAndList}}")
    private Map<String, List<String>> mapAndList;
3、属性前缀注入

Apollo配置中心

apollo.teacher.map.hn.name = hn
apollo.teacher.map.hn.age = 14
apollo.teacher.map.hn.level = middle
apollo.teacher.map.qsm.name = qsm
apollo.teacher.map.qsm.age = 18
apollo.teacher.map.qsm.level = low

apollo.teacher.list[0].name = qsm
apollo.teacher.list[0].age = 18
apollo.teacher.list[0].level = high
apollo.teacher.list[1].name = jd
apollo.teacher.list[1].age = 20
apollo.teacher.list[1].level = low

java代码中获取方式

    @Bean
    @ConfigurationProperties(prefix = "apollo.teacher")
    public Teacher teacher() {
        return new Teacher();
    }
4、全部代码

1、测试入口代码

@RestController
@Slf4j
public class HealthController {

    @Autowired
    Teacher teacher;

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

    @Value("#{${apollo.list}}")
    private List<String> list;

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

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

    @GetMapping("/health")
    private String health() {

        log.info(JSONObject.toJSONString(teacher));

        log.info(JSONObject.toJSONString(map));
        log.info(JSONObject.toJSONString(list));
        log.info(JSONObject.toJSONString(mapAndMap));
        log.info(JSONObject.toJSONString(mapAndList));
        log.info(JSONObject.toJSONString(list));

        return "ins-ssp-facade-web service check: ok!!!!";
    }
}

2、前缀配置的2个基础类

@Data
public class Teacher {
    private List<Student> list;
    private HashMap<String, Student> map;
}
@Data
public class Student {
    private String name;
    private Integer age;
    private String level;
}

3、在启动类下以javaConfig形式配置bean

@SpringBootApplication
@EnableApolloConfig
public class InsSspServiceApiApplication {

    public static void main(String[] args) {
        SpringApplication.run(InsSspServiceApiApplication.class, args);
    }

    @Bean
    @ConfigurationProperties(prefix = "apollo.teacher")
    public Teacher teacher() {
        return new Teacher();
    }
}



问题:

Apollo里 apollo.list[0].name = qsm apollo.list[1].name = qsm2 apollo.list[2].name = qs3 这种 java代码里如何取啊?

可以使用以下方式:

apollo.list[0].name = qsm
apollo.list[1].name = qsm2
apollo.list[2].name = qs3

类如下

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * @author qsm@xx.com
 * @date 2021/4/23 11:38
 * @description
 */
@Component
@ConfigurationProperties(prefix = "apollo")
@Data
public class QsmConfig {
    List<Student> list;
}

使用如下

    @Autowired
    QsmConfig qsmConfig;

以上就是Apollo配置list和map以及组合应用的分析,喜欢就点个赞吧~~~
【完】



正在去BAT的路上修行

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apollo配置语法——Apollo配置List和Map以及组合应用——非常详细 的相关文章

随机推荐

  • 使用UART串口下调试CH376芯片

    CH376是文件管理控制芯片 xff0c 用于单片机系统读写U 盘或者SD 卡中的文件 CH376支持USB设备方式和USB主机方式 xff0c 并且内置了USB通讯协议的基本固件 xff0c 内置了处理Mass Storage海量存储设备
  • Ubuntu(arm)22.04配置清华源

    1 xff0c 清华源地址 地址 xff1a https mirror tuna tsinghua edu cn help ubuntu 2 xff0c 获取ubuntu arm 的源 ubuntu arm 要使用清华源中ubuntu po
  • DGUS调试笔记一

    0 串口的通讯配置 xff1a 在机器背面VHC86芯片有两个焊点 xff0c 若焊点短接 xff0c 即屏工作在TTL电平下 xff0c 默认出厂处于分离状态 xff0c 即RS232电平下 直接将DIN与232的TX相连 xff0c D
  • 使用HAL库函数建立STM32F2工程笔记

    一 建立一个新的文件夹 xff0c 新建三个文件夹User Driver Project xff0c 还可以加一个Doc存放工程的相关说明等等 1 将STM32F2xx的库函数 xff08 HAL函数库 xff09 中的Drivers文件夹
  • STM32伺服编码器接口

    在STM32的高级定时器和一般定时器中有Encoder interface mode xff08 编码器接口 xff09 xff0c TI1和TI2分别对应TIM CH1 和TIM CH2 通道 一 计数规则如下 xff1a 表55的是编码
  • STM32下调试CAN通信

    基本流程 xff1a 1 初始化CAN模块 xff1a 启用CAN时钟 配置CAN功能寄存器 xff08 包括位定时 xff0c 分频等等 xff09 配置CAN过滤器 打开中断 2 初始化I O口 启用GPIO时钟 打开CAN对应的GPI
  • JLINK固件修复

    0 开始前准备工具 1 SAM BA v2 12 exe 用于烧写固件 下载地址 xff1a http download csdn net detail hzt12345hf 9457629 新版本的SAM BA xff08 例如sam b
  • Keil4,Keil5下使用STlink II 仿真调试

    1 关闭Keil软件 2 下载以下压缩包STlink II相关文件 xff0c 包含三个文件ST LINKII KEIL dll xff0c StorAcc dll和TOOLS INI 3 将ST LINKII KEIL dll和StorA
  • Centos下PHP5升级PHP7

    首先下载PHP7安装包 xff0c 使用wget http am1 php net distributions php 7 2 0 tar bz2 或者直接访问下载 xff0c 然后ftp到linux服务器解压压缩包 xff0c tar x
  • STM32F1xx及STM32F2系列串口,SPI配置,CAN配置

    平时常用的串口和SPI配置在这里列出来 xff0c 以便不时之需 xff0c 直接拿过来用 同时指出了STM32F1系列和STM32F2系列经常出现的问题 使用的库函数为标准库函数 xff0c 而非HAL库 一 串口的配置 xff1a ST
  • 嵌入式中缓冲区队列的实现

    在串口 xff0c IIC或SPI以及CAN等通信中 xff0c 往往需要一次性发送一帧完整的数据 xff0c 由于硬件发送的速度问题 xff0c 硬件不能及时发送出去 xff0c 就会导致数据丢失等一系列问题 通常采用建立缓冲区解决 队列
  • FreeRTOS中断优先级,临界区的配置(特别重要)

    一 背景 网上有许多关于FreeRTOS中断优先级的配置资料 xff0c 但是在v10 0中个别配置项发生了变化 xff0c 在这篇文章中详细的介绍了整个优先级管理配置方案 ARM芯片的优先级为0 255 不同的芯片厂商所用的优先级不同 x
  • 推荐EI、SCI期刊及投稿建议-备忘(转)

    推荐EI SCI期刊及投稿建议 备忘 EI检索期刊计算机方面SCI和EI期刊 xff08 EI期刊会议注册前推荐 xff09 大会注册前推荐的EI期刊 xff1a 英文投稿的一点经验 转载 再加两封催稿信 英语不好 xff0c 但意思表达到
  • arm linux的入口部分的代码分析笔记

    原文转载自http bbs chinaunix net thread 2039668 1 1 html xff0c 写的不错 xff0c 在这里首先感谢作者 查看带有图片的文章请移步 https blog zh123 top p 61 27
  • 树莓派上使用python实现LCD1602显示当前ip

    树莓派一般运行Linux操作系统后通过远程控制来运行 xff0c 但是往往由于网络原因导致树莓派分配的ip地址被改变 xff0c 致使需要重新连接屏幕后才能查看树莓派的当前ip 最近手头有个LCD1602 xff0c 所以尝试将通过驱动LC
  • FreeRTOS三种数据结构区别(StreamBuffer,MessageBuffer,Queue)

    转载自博客 xff1a https blog zh123 top p 61 308 Queue队列是最基本的数据结构 xff0c 在FreeRTOS v10 0后提供了另外两种高级数据结构为Streambuffer和MessageBuffe
  • openCV学习之错误记录

    本片blog用来记录平时学习过程中遇到的错误 xff0c 以及解决办法 xff1b 错误1 错误提示 xff1a 在using namespace cv 前缺少一个 原因 xff0c 是在引用的头文件中存在一个类等结束后未加 错误2 cv
  • linux小技巧——使用MobaXterm宏进行linux批量命令执行——一看就会

    场景 xff1a 我们经常登录linux跳板机去查看应用的日志 xff0c 但是看日志的时候 xff0c 需要输入很多的命令 xff0c 这些命令实际上 xff0c 每一次输入都是重复的 xff0c 特别是命令条数较多的时候 xff0c 这
  • FastJson小技巧——@JSONField的史上最全最详细讲解——一看就会

    常见 xff1a 使用fastjson进行需要对字段进行一些特殊处理 xff0c 比如时间格式 xff0c 前后端名字不一致 xff0c 字段为null是否依然序列化等问题 那么fastjson的 64 JSONField就能很好的解决这些
  • Apollo配置语法——Apollo配置List和Map以及组合应用——非常详细

    文章目录 1 正常的list和map形式2 mapAndMap形式 mapAndList形式3 属性前缀注入4 全部代码 场景 xff1a 最近使用老东家携程的开源软件Apollo配置中心的时候 xff0c 需要一个map中的value也是