【Spring Boot】06 @Value 与 @ConfigurationProperties

@ConfigurationProperties @Value
功能 批量注入配置文件中的属性 一个一个指定属性
松散绑定(松散语法) 支持 不支持
SpEL 不支持 支持
JSR303 数据校验 支持 不支持
复杂类型封装 支持 不支持
功能
@ConfigurationProperties 一句话搞定,直接批量注入
@ConfigurationProperties(prefix = "person")
@Value 需要一个一个进行指定
/**
     * <bean class="Person">
     *      <property name="LastMame" value=""></property>
     * </bean>
     *
     * value中可以输入:字面量/${key}从环境变量、配置文件中获取值/#{SpEL}
     */
@Value("${person.last-name}")
private String lastName;
@Value("#{5*2}")
private Integer age;
@Value("true")
private Boolean boss;
松散语法:
lastName: zhangsan
last_name: zhangsan
last-name: zhangsan

以上三种都可以进行绑定

SpEL:
@Value("#{5*2}")
private Integer age;

支持表达式,可以进行计算

JSR303 数据校验
@ConfigurationProperties(prefix = "person")
@Validated

在 @ConfigurationProperties 后面加上 @Validated 注释,证明下面数据需要校验

例在字段上加上 @Email 注释,即说明 lastName 字段必须为邮件格式,否则不能运行成功

// lastName 必须是邮箱格式
@Email
private String lastName;
复杂类型封装

如果有 Map 或者 List 字段等复杂类型封装,@Value 是获取不到值的,故:

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

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

配置文件不管是 yml 还是 properties 都能获取到值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章