springboot配置文件中的属性注入

@ConfigurationProperties(prefix = "user")

  • 支持jsr-303数据检验 添加注解@Validated
<!--jsr-303数据检验依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>
  • 使用 javax.validation包下的注解
user:
  id: 1
  userName: 黄汉山
  birthDay: 1995/04/14
#  hobbies: [打篮球,玩游戏]
  hobbies:
    -打篮球
    -玩游戏
  girl-friends:
    18 : 刘亦菲
    20 : 范冰冰
#  girl-friends: {18 : 范冰冰,20 : 刘亦菲}
@Component
@ConfigurationProperties(prefix = "user")
@Validated
public class User {
    private Integer id;
    private String userName;
    private Date birthDay;
    private List<String> hobbies;
    private Map<String,String> girlFriends;
}
<!--导入配置文件处理器,配置文件进行绑定就会有提示-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

@ConfigurationProperties 和@Value的对比

@ConfigurationProperties @Value
绑定 批量注入配置文件中的属性 一个个指定
松散绑定(松散语法) 支持 支持有限
SpEL 不支持 支持
自动提示 支持 不支持
使用场景

如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;

如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;

posted @ 2021-04-17 11:15  阿灿呀  阅读(288)  评论(0)    收藏  举报