@[TOC]Spring Boot读取配置文件(.yml或.properties)属性的几种方式:
Spring boot作为目前Java开发领域非常流行的,实际开发过程中经常需要从配置文件中读取相应的参数,目前总结有以下三种读取配置文件属性的方式;
@Value注解
@Value注解是Spring 提供读取单个属性注解,使用非常简单,在相应的类属性上添加@Value注解即可,通过${“key”}获取对应key的值。
@Value("${demo.success}")
private boolean success;
但是在使用的时候需要注意以下几点:
- 首先该属性所属的类必须是 Spring 容器管理的Bean ,也就是说该类的注解一般是由@Controller,@RestController,@Component,@Service等注解修饰;
- 对应的Key在配置文件中必须存在,否则Spring Boot应用在启动的时候会报以下错误(demo.success1这个key在我的配置文件中不存在);
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'demo.success1' in value "${demo.success1}"
@ConfigurationProperties
@ConfigurationProperties注解也是Spring Boot提供将Java Bean属性初始化的方法,使用上也较为简洁,在相应的Java bean上添加@ConfigurationProperties(prefix = “属性KEY前缀”)
@Component
@ConfigurationProperties(prefix = "my.thread") // my.thread配置文件的key前缀
@PropertySource("classpath:application.yml") //@PropertySource 指定来源于那个配置文件,可以没有
public class ThreadConfig {
// 单属性赋值
private int max;
private int min;
private long waitTime;
// map属性赋值
private Map<String,String> map;
// list属性赋值
private List<String> list;
// bean对象包含其他bean对象的初始化
private Config01 config;
// 此处省略 属性的set/get方法;
}
*.yml文件的配置实例
demo:
success: true
my:
thread:
max: 10
min: 2
waitTime: -1
# List的写法,多个属性用逗号分隔
list: 01,02,03,04
#普通对象的写法
config:
test01: 0001
test02: 0002
# Map参数注入的写法
map:
key01: value01
key02: vale02
传统方法
传统方法为通过文件流的方式读取配置文件,这里就不列举了。