SpringBoot读取配置文件(包含Map和List结构)

编程

@Value("${logsPath")

private String logsPath; //日志地址

注意:使用这种写法时,所在类必须是被Spring管理的Bean类,也就是使用了@Service、@Controller、@Component、@Configuration等注解的类。

2 Spring上下文读取配置文件信息

ApplicationContext context...

String limit = context.getEnvironment().getProperty("limit");

3 获取Properties中的Map结构和List结构

3.1 @Value方式

# 配置文件

list: topic1,topic2,topic3

maps: "{key1: "value1", key2: "value2"}"

# 使用方式

@Value("#{"${list}".split(",")}")

private List<String> list;

@Value("#{${maps}}")

private Map<String,String> maps;

# 注意上面的map解析中,一定要用""把map所对应的value包起来,要不然解析会失败,导致不能转成 Map<String,String>

3.2 ConfigurationProperties

定义Map和List机构
 

#List properties

myMapAndList.list[0]=user1

myMapAndList.list[1]=user2

myMapAndList.list[2]=user3

myMapAndList.list[3]=user4

#Map Properties

myMapAndList.map.www=4201

myMapAndList.map.wuhan=4201

myMapAndList.map.tianjin=1200

 定义Config配置类来读取配置信息(注意匹配前缀)

import lombok.Data;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.context.annotation.Configuration;

import org.springframework.context.annotation.PropertySource;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

@Data

@Configuration

@PropertySource("classpath:application.properties")

@ConfigurationProperties(prefix = "myMapAndList")

public class MyMapAndListConfig{

private List<String> list = new ArrayList<>();

private Map<String, String> map = new HashMap<>();

}

 

 使用

@Autowired

private MyMapAndListConfig myMapAndListConfig ;

 

4 @Value与ConfigurationProperties区别

二者区别

@ConfigurationProperties

@Value

功能

批量注入配置文件中的属性

一个个指定

松散绑定(松散语法)

支持

不支持

SpEL

不支持

支持

JSR303数据校验

支持

不支持

复杂类型封装

支持

不支持(简单支持)

参考链接: https://segmentfault.com/a/1190000018536906

 

4 获取多个配置文件中的属性值

配置多个配置文件参考:https://www.jianshu.com/p/0c07d38114ab

//配置单个配置文件

//@PropertySource("classpath:application-dev.properties")

//配置多个配置文件

@PropertySources({

@PropertySource("classpath:application-dev.properties"),

@PropertySource("classpath:application-prod.properties"),

@PropertySource("classpath:application-preview.properties")

})

重新实现PropertySourceFactory 参考:https://segmentfault.com/a/1190000017831251

以上是 SpringBoot读取配置文件(包含Map和List结构) 的全部内容, 来源链接: utcz.com/z/513783.html

回到顶部