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;
我成功因为我志在成功
浙公网安备 33010602011771号