【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 都能獲取到值

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