目录
一、简介
在日常开发使用 SpringBoot 框架时,经常有一些配置信息需要放置到配置文件中,我们需要手动读取这些配置到应用中进行一些逻辑,这里整理了一些常用读取配置的方法,简单介绍一下。
1、SpringBoot 中常用读取配置方法
- 使用 @ConfigurationProperties 注解读取配置
配置方便,支持赋值复杂类型
- 使用 @Value 注解读取配置
使用灵活,方便对读取数值进行定制化处理,可赋值给静态化变量
2、 @ConfigurationProperties和@Value的区别
二者区别 | @ConfigurationProperties | @Value |
---|---|---|
功能 | 批量注入配置文件中的属性 | 一个个指定 |
松散绑定(松散语法) | 支持 | 不支持 |
SpEL | 不支持 | 支持 |
JSR303数据校验 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
赋值静态化属性 | 据说可以,笔者未成功 | 支持 |
二、使用 @ConfigurationProperties 读取配置
application.yml配置文件内容:
jiug:
name: keffett
age: 18
school: 淮北师范大学,五河县第二中学
technicalList :
- name: 驾驶证
grade: C1
- name: 计算机
grade: 二级
使用@ConfigurationProperties对配置属性进行赋值
@Data
@Configuration
@ConfigurationProperties(prefix = "jiug")
public class ConfigJiug {
private String name ;
// JSR303数据校验
@NotNull
@Min(0)
private int age ;
// 默认值
private String loc = "中国" ;
// list
private List<String> school ;
// list对象
private List<Technical> technicalList ;
}
@Data
class Technical {
private String name;
private String grade;
}
要使用JSR 303校验,需要在Spring Boot应用程序的依赖中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
三、使用 @Value 读取配置
application.yml配置文件内容:
jiug:
name: keffett
age: 18
declaration: 认识世界,
school: 淮北师范大学,五河县第二中学
使用 @Value 读取配置文件
@Component
public class ConfigConstant {
@Value("${jiug.name}")
private String name ;
@Value("${jiug.age}")
private int age = 24 ;
// 设置默认值
@Value("${jiug.loc:中国}")
private String loc;
// 使用 SpEL 表达式
@Value("#{configJiug.age > 18 ? 'adult' : 'child'}")
private String status;
// 赋值到静态变量
public static String declaration ;
@Value("${jiug.declaration}")
public void setDeclaration(String declaration) {
ConfigJiug.declaration = declaration;
}
// list
private List<String> school ;
@Value("${jiug.school}")
public void setSchool(String school) {
this.school = Arrays.asList(school.split(","));
}
// list对象 不支持,可以配置json串,然后在set方法中解析
}