小工具知识网

当前位置: 首页 > 行业知识 > springboot使用properties的复杂类型list/map(看这一篇就够了)

行业知识

springboot使用properties的复杂类型list/map(看这一篇就够了)

2026-11-05 00:24:09 来源:互联网转载

1、简介

在springbooot中properties文件类型作为最常用的配置文件格式之一,常用的简单类型不用多说,主要了解下properties中的各种复杂类型(List、Map类型及所包含的复杂泛型)的配置,使得能够更加丰富我们开发中配置文件的数据结构,包括:List、List、List、List、List、Map、Map、Map等。

2、介绍及测试

本测试使用最简单的springboot web项目做测试springboot版本为2.3.4,properties配置为了方便直接放在application.properties中,测试项目结构如下图,且测试代码直接写到ApplicationRunner的实现类中,项目启动时直接执行测试类。

测试pom文件如下:

2.1.基础list和map类型

2.1.1.properties配置
# properties中简单的maptest.coll.maps.key1=value1test.coll.maps.key2=value2# properties中简单的listtest.coll.list[0]=value0test.coll.list[1]=value1

除却上面配置方式外还有本人感觉更简单且好理解的配置方式:

# properties中简单的listtest.coll.list=value0,value2# properties中简单的maptest.coll.maps[key1]=value1test.coll.maps[key2]=value2
2.1.2.配置加载
@Slf4j@Configuration@ConfigurationProperties(prefix = "test.coll")@Datapublic class TestConf01{    private Map maps;    private List list;}
2.1.3.执行
@Slf4j@Order(1)@Componentpublic class TestRunner01 implements ApplicationRunner {    @Autowired    private TestConf testConf;    @Override    public void run(ApplicationArguments args) {        // 测试简单map类型        val mapsJson = JSON.toJSONString(testConf.getMaps());        log.info("这是简单map类型:{}", mapsJson);        // 测试简单list类型        val listJson = JSON.toJSONString(testConf.getList());        log.info("这是简单list类型:{}", listJson);    }}

2.2.复杂List

本节主要讲解复杂性list配置,包括List、List、List、List、List等,这些类型对list在配置文件中的应用已经够用,如需更加复杂的配置,我们按照文档中例中的简单到复杂,一维到二维的规律继续推演即可。

2.2.1.properties配置
# properties中复杂类型list,泛型为实体类(List)test.coll.list.list-person[0].name=tomtest.coll.list.list-person[0].age=18test.coll.list.list-person[1].name=jerrytest.coll.list.list-person[1].age=20# properties中复杂类型list,泛型为Map(List)test.coll.list.list-map[0].key1=value1test.coll.list.list-map[0].key2=value2test.coll.list.list-map[1].key2=value2test.coll.list.list-map[1].key3=value3# properties中复杂类型list,泛型为List(List)test.coll.list.list-list[0][0]=value1test.coll.list.list-list[0][1]=value2test.coll.list.list-list[1][0]=value3test.coll.list.list-list[1][1]=value4# properties中复杂list,list中为Listtest.coll.list.list-list-person[0][0].name=tom1test.coll.list.list-list-person[0][0].age=18test.coll.list.list-list-person[0][1].name=jerry1test.coll.list.list-list-person[0][1].age=20test.coll.list.list-list-person[1][0].name=tom2test.coll.list.list-list-person[1][0].age=18test.coll.list.list-list-person[1][1].name=jerry2test.coll.list.list-list-person[1][1].age=20# properties中复杂list,list中为Map>test.coll.list.list-map-person[0].person1[name]=tom1test.coll.list.list-map-person[0].person1[age]=18test.coll.list.list-map-person[0].person2[name]=jerry1test.coll.list.list-map-person[0].person2[age]=20test.coll.list.list-map-person[1].person3[name]=tom2test.coll.list.list-map-person[1].person3[age]=18test.coll.list.list-map-person[1].person4[name]=jerry2test.coll.list.list-map-person[1].person4[age]=20
2.2.2.配置加载
@Slf4j@Configuration@ConfigurationProperties(prefix = "test.coll.list")@Datapublic class TestConf02 {    // 复杂类型list,泛型为实体类(List)    private List listPerson;    // 复杂类型list,泛型为Map(List)    private List listMap;    // 复杂类型list,泛型为List(List)    private List listList;    // 复杂list,list中为List    private List listListPerson;    // 复杂list,list中为Map>    private List listMapPerson;    @Data    public static class Person {        private String name;        private int age;    }}
2.1.3.执行
@Slf4j@Order(2)@Componentpublic class TestRunner02 implements ApplicationRunner {    @Autowired    private TestConf02 testConf;    @Override    public void run(ApplicationArguments args) {        // 复杂类型list,泛型为实体类(List)        val json1 = JSON.toJSONString(testConf.getListPerson());        log.info("复杂list,list中为实体类:{}", json1);        // 复杂类型list,泛型为Map(List)        val json2 = JSON.toJSONString(testConf.getListMap());        log.info("复杂list,list中为Map:{}", json2);        // 复杂类型list,泛型为List(List)        val json3 = JSON.toJSONString(testConf.getListList());        log.info("复杂list,list中为List:{}", json3);        // 复杂类型list,泛型为List(List)        val json4 = JSON.toJSONString(testConf.getListListPerson());        log.info("复杂list,list中为List:{}", json4);        // 复杂类型list,泛型为List(List)        val json5 = JSON.toJSONString(testConf.getListMapPerson());        log.info("复杂list,list中为Map:{}", json5);    }}

2.3.复杂Map

本节主要讲解复杂性list配置,包括Map、Map、Map讲解和实例

2.3.1.properties配置
#-------------------------------------------------------Map复杂类型-----------------------------------------------------# Maptest.coll.map.map-person.person1[name]=tomtest.coll.map.map-person.person1[age]=18test.coll.map.map-person.person2[name]=jerrytest.coll.map.map-person.person2[age]=20# Maptest.coll.map.map-list.key1[0]=value1test.coll.map.map-list.key1[1]=value2test.coll.map.map-list.key2[0]=value3test.coll.map.map-list.key2[1]=value4# Map,# test.coll.map.map-list-person.Map中的key[list类型value的下标].实体类的属性名=tom1test.coll.map.map-list-person.person1[0].name=tom1 test.coll.map.map-list-person.person1[0].age=18test.coll.map.map-list-person.person1[1].name=jerry1test.coll.map.map-list-person.person1[1].age=20test.coll.map.map-list-person.person2[0].name=tom2test.coll.map.map-list-person.person2[0].age=18test.coll.map.map-list-person.person2[1].name=jerry2test.coll.map.map-list-person.person2[1].age=20
2.2.2.配置加载
@Slf4j@Configuration@ConfigurationProperties(prefix = "test.coll.map")@Datapublic class TestConf03 {    // Map    private Map mapPerson;    // Map    private Map mapList;    // Map    private Map mapListPerson;}
2.1.3.执行
@Slf4j@Order(3)@Componentpublic class TestRunner03 implements ApplicationRunner {    @Autowired    private TestConf03 testConf;    @Override    public void run(ApplicationArguments args) {        // 泛型为实体类:Map        val json1 = JSON.toJSONString(testConf.getMapPerson());        log.info("复杂Map,Map:{}", json1);        // 泛型为实体类:Map

上一篇:【Leetcode】899. Orderly Queue(配数学证明)

下一篇:服务器怎么选取房间?