使用@ConfigurationProperties注入属性
Spring Boot提供的@ConfigurationProperties注解用来快速、方便地将配置文件中的自定义属性值批量注入到某个Bean对象的多个对应属性中。
-
在SpringBoot中,除了使用@ConfigurationProperties注入属性的值,还可以使用Spring的底层注解@Value注入属性的值。
@Component
public class Person {
@Value("${person.last-name}")
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;
}
-
这个两个注解都能注入属性的值,那么这两个注解的区别是什么?
@ConfigurationProperties能够批量注入配置文件的属性。
@Value只能一个个指定。
-
@ConfigurationProperties支持松散绑定。
@ConfigurationProperties(prefix = "person"),只需要指定一个前缀,就能绑定有这个前缀的所有属性值。
-
@Value支持SpringEl的语法。@ConfigurationProperties不支持SpringEl的语法。
-
5
@ConfigurationProperties还支持JSR303进行配置文件值及校验。
-
6
@Value不支持复杂类型封装注解。
如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value,如果我们转么编写了一个javabean和配置文件进行映射,就直接使用ConfigurationProperties;
案例演示:将配置文件中uploadPath的值松散绑定到 Props类对象属性上