使用@ConfigurationProperties(prefix = “”)配置。
application.yml:
server:
port: 8081
person:
lastName: zhangsan
age: 18
boss: false
birth: 2019/08/20
maps: {k1: v1,k2: v2}
lists:
- lisi
- zhaoliu
dog:
name: 小狗
age: 2
javaBean:
/**
* 将配置文件中的每一个属性值映射到组件中
* @ConfigurationProperties:
* 告诉SpringBoot将本类中的所有属性和配置文件中相关配置进行绑定
* 只有这个组件是容器中的组件,才能使用提供的@ConfigurationProperties注解
*/
@ConfigurationProperties(prefix = "person")
@Component
public class Person {
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
···
可以导入配置文件处理器,配置文件绑定就会有提示:
<!--配置配置文件处理器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
使用@Value("")注解
字面量:${key} #{SpEL}
application.properties:
#server.port=8081
#idea的properties配置文件默认使用Utf-8
#映射person属性
person.last-name=张三
person.age=19
person.birth=2019/08/20
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,c
person.dog.name=dog
person.dog.age=2
javaBean:
@Component
public class Person {
@Value("${person.last-name}")
private String lastName;
@Value("#{11*2}")
private Integer age;
···
两者对比:
@ConfigurationProperties | @Value | |
---|---|---|
功能 | 批量注入配置文件中的属性 | 分别注入 |
松散绑定(松散语法) | 支持 | 不支持 |
SpEL | 不支持 | 支持 |
JSR303数据校验 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
注:
松散语法为:@Value("${person.last-name}")
JSR303校验为:
@Validated
public class Person {
@Email
private String email;
···
若只是在某个业务逻辑中获取配置文件中的某个属性值,则使用@Value;
若专门编写了一个javaBean与配置文件进行映射,则使用@ConfigurationProperties。
配置文件注入值数据校验
使用@Validated属性即可,代码如上。