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<>();
}
使用
@Autowiredprivate MyMapAndListConfig myMapAndListConfig ;
4 @Value与ConfigurationProperties区别
功能
批量注入配置文件中的属性
一个个指定
松散绑定(松散语法)
支持
不支持
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