SpringBoot读取配置文件中的数据到map和list
SpringBoot读取配置⽂件中的数据到map和list 之前使⽤过@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的l⽂件中添加如下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
然后定义⼀个配置类,代码如下:
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依赖项。
然后定义配置类,代码如下:
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 fig.ListConfig;
import fig.MapConfig;
2020年法定节假日安排
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.st.context.SpringBootTest;
import st.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 = LimitSizeMap();
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: "+ (key));
}
}
网王之盛夏微醺
System.out.println("------");
List<String> limitSizeList = LimitSizeList();
if(limitSizeList == null || limitSizeList.size()<=0){
System.out.println("limitSizeList读取失败");
}else{
System.out.println("limitSizeList读取成功,数据如下:");
for(String str : limitSizeList){
System.out.println(str);
怎么获得root权限>鼓励孩子加油的暖心话
}
}
}
}
运⾏测试类,发现控制台输出如下:
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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。