网站首页 > 技术文章 正文
之前使用过@Value("${name}")来读取springboot配置文件中的配置信息,比如:
@Value("${server.port}") private Integer port;
后面遇到一个新问题,如果我要把配置文件中的一系列数据一下子读出来到同一个数据结构中怎么办呢?
比如说读取配置信息到map或者list
下面来讲述一下如何实现这个功能。
springboot读取配置文件中的配置信息到map
首先看配置文件要读到map中的信息:test: limitSizeMap: baidu: 1024 sogou: 90 hauwei: 4096 qq: 1024
接着我们需要再maven的pom.xml文件中添加如下依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
然后定义一个配置类,代码如下:
package com.eknows.config; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Configuration; import java.util.HashMap; import java.util.Map; /** * 配置类 * 从配置文件中读取数据映射到map * 注意:必须实现set方法 * @author eknows * @version 1.0 * @since 2019/2/13 9:23 */ Configuration ConfigurationProperties(prefix = "test") EnableConfigurationProperties(MapConfig.class) public class MapConfig { /** * 从配置文件中读取的limitSizeMap开头的数据 * 注意:名称必须与配置文件中保持一致 */ private Map<String, Integer> limitSizeMap = new HashMap<>(); public Map<String, Integer> getLimitSizeMap() { return limitSizeMap; } public void setLimitSizeMap(Map<String, Integer> limitSizeMap) { this.limitSizeMap = limitSizeMap; } }
这样,我们就可以把配置文件中的数据以map形式读出来了,key就是配置信息最后一个后缀,value就是值。
测试代码请看文章最后。
springboot读取配置文件中的配置信息到list
首先看配置文件要读到list中的信息:
test-list: limitSizeList[0]: "baidu: 1024" limitSizeList[1]: "sogou: 90" limitSizeList[2]: "hauwei: 4096" limitSizeList[3]: "qq: 1024"
接着如上添加spring-boot-configuration-processor依赖项。
然后定义配置类,代码如下:
package com.eknows.config; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Configuration; import java.util.ArrayList; import java.util.List; /** * 配置类 * 从配置文件中读取数据映射到list * @author eknows * @version 1.0 * @since 2019/2/13 9:34 */ Configuration @ConfigurationProperties(prefix = "test-list") // 不同的配置类,其前缀不能相同 @EnableConfigurationProperties(ListConfig.class) // 必须标明这个类是允许配置的 public class ListConfig { private List<String> limitSizeList = new ArrayList<>(); public List<String> getLimitSizeList() { return limitSizeList; } public void setLimitSizeList(List<String> limitSizeList) { this.limitSizeList = limitSizeList; } }
测试上述配置是否有效
编写测试类:
package com.eknows; import com.eknows.config.ListConfig; import com.eknows.config.MapConfig; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.util.List; import java.util.Map; /** * @author eknows * @version 1.0 * @since 2019/2/13 9:28 */ @SpringBootTest @RunWith(SpringRunner.class) public class ConfigTest { @Autowired private MapConfig mapConfig; @Autowired private ListConfig listConfig; @Test public void testMapConfig() { Map<String, Integer> limitSizeMap = mapConfig.getLimitSizeMap(); if (limitSizeMap == null || limitSizeMap.size() <= 0) { System.out.println("limitSizeMap读取失败"); } else { System.out.println("limitSizeMap读取成功,数据如下:"); for (String key : limitSizeMap.keySet()) { System.out.println("key: " + key + ", value: " + limitSizeMap.get(key)); } } System.out.println("------"); List<String> limitSizeList = listConfig.getLimitSizeList(); if (limitSizeList == null || limitSizeList.size() <= 0) { System.out.println("limitSizeList读取失败"); } else { System.out.println("limitSizeList读取成功,数据如下:"); for (String str : limitSizeList) { System.out.println(str); } } } }
运行测试类,发现控制台输出如下:
limitSizeMap读取成功,数据如下:
key: qq, value: 1024 key: baidu, value: 1024 key: sogou, value: 90 key: hauwei, value: 4096 ------ limitSizeList读取成功,数据如下: baidu: 1024 sogou: 90 hauwei: 4096 qq: 1024
以上就是我的对此问题的整理和思考。如果你对此话题有自己的思考和理解,也欢迎留言一起探讨!
私信我:“资料”,可免费领取更多学习资料哦
猜你喜欢
- 2024-10-18 【Python】map函数的常见用法,你知道多少?
- 2024-10-18 Python 中的数据可视化:将列表转换为图形
- 2024-10-18 Java 把一个 List 转换为字符串(java list转成字符串)
- 2024-10-18 Java Stream API:将线性集合添加到Map,键为对象属性
- 2024-10-18 「Java」咦,它就是Map和List的儿子吧
- 2024-10-18 一日一技:举例说明python中的map()方法
- 2024-10-18 详解 Python Map 函数(python map函数的用法)
- 2024-10-18 你应该知道的Java Map 的七个常见问题!
- 2024-10-18 Java核心数据结构(List、Map、Set)原理与使用技巧
- 2024-10-18 在JAVA中,List集合去重的方式有哪些?下面有你不知道的吗?
- 最近发表
- 标签列表
-
- cmd/c (64)
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- sqlset (64)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)