Spring Boot————@ConfigurationProperties的@Value區別
引言
Spring Boot從配置檔案中取值的方式有兩種,一種是批量注入@ConfigurationProperties,另一種是單獨注入@Value。
它們之間除了批量與單獨取值的區別之外,還存在著其他一些使用方式,本篇部落格將詳細講解這兩種註解之間的區別和使用方式。
區別比較
注:
鬆散繫結,指配置檔案中的屬性名與Bean中的屬性名大小寫不完全一致,但是字母相同的情況。
比如bean中可以是Birth_day,配置檔案(yaml)中是 bir-thday、或 BIRTH_DAY、或b-i-r-t-h-d-a-y等。
SpEL,指的是spring 表示式,格式:#{SpEL expression} ,如:#{2 * 10}
JSR303資料校驗,Jsr-303是一種註解方式的資料校驗,可以通過標記在屬性上來判斷從配置檔案中對映的值是否符合我們的要求,如@NotNull欄位不允許為空、@Email欄位格式必須是電子郵件,這些註解一般都被放在javax.validation.constraints包下,並且除了將這些校驗註解標記在屬性上,另外還需要在被校驗的類上標記@Validated註解(org.springframework.validation.annotation包下)才能生效。
複雜型別,指物件、Map、List等,相對的是簡單型別如:字串、數值、日期、布林等。
總結
@ConfigurationProperties和@Value的使用都是比較簡單的。首先,最重要的就是前者是批量匯入屬性,後者是單獨匯入某一條屬性。
他們的區別主要是對一些特性的支援如鬆散繫結、SpEL、JSR-303資料校驗、複雜型別的封裝。
關於如何在全域性配置檔案中定義複雜型別,可以參考另一篇文章《Spring Boot————YAML配置檔案》
更多Spring Boot技術分享,可以關注博主,也可以文末留言。