欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot?@Value與@ConfigurationProperties二者有哪些區(qū)別

 更新時間:2022年10月26日 14:20:05   作者:沫洺  
這篇文章主要介紹了SpringBoot?@Value與@ConfigurationProperties二者的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧

@Value 和 @ConfigurationProperties 注解都能讀取配置文件中的屬性值并綁定到 JavaBean 中,但兩者存在以下不同。

區(qū)別@ConfigurationProperties@Value
使用位置不同標注在 JavaBean 的類名上標注在 JavaBean 的屬性上
功能不同用于批量綁定配置文件中的配置單值綁定
松散綁定(松散語法)支持部分支持
Spel不支持支持
復(fù)雜類型封裝支持支持,比較繁瑣
JSR303數(shù)據(jù)校驗支持不支持
應(yīng)用場景不同通過JavaBean獲取整個配置文件單個屬性值

說明

使用位置不同

  • @ConfigurationProperties:標注在 JavaBean 的類名上;
  • @Value:標注在 JavaBean 的屬性上。
@Component
@Data
@ConfigurationProperties(prefix = "person")
@PropertySource("classpath:person.properties")
public class Person {
    private String firstName;
}
@Component
@Data
@PropertySource("classpath:user.properties")
public class User {
    @Value("${user.username}")
    private String username;
}

功能不同

  • @ConfigurationProperties:用于批量綁定配置文件中的配置;
  • @Value:只能一個一個的指定需要綁定的配置。

松散綁定支持不同

@ConfigurationProperties:支持松散綁定(松散語法),例如實體類 Person 中有一個屬性為 firstName,那么配置文件中的屬性名支持以下寫法:

  • person.firstName
  • person.first-name
  • person.first_name
  • PERSON.FIRST_NAME

@Vaule:不支持松散綁定。

SpEL 支持不同

SpEL表達式:#{obj}

  • @ConfigurationProperties:不支持 SpEL 表達式;
  • @Value:支持 SpEL 表達式。
@Value("#{${girl.hobbyMap}}")
private Map<String,Object> hobbyMap;

復(fù)雜類型封裝

  • @ConfigurationProperties:支持所有類型數(shù)據(jù)的封裝,例如 Map、List、Set、以及對象等;
  • @Value:支持基本數(shù)據(jù)類型的封裝,例如字符串、布爾值、整數(shù)等類型, 對集合Map list set配置有要求

屬性校驗

  • @Value不支持屬性校驗
  • @ConfigurationProperties 支持屬性校驗
@Configuration
@ConfigurationProperties(prefix = "boy")
@Data
@PropertySource("classpath:boy.properties")
@Validated
public class Boy {
    @NotNull//不為空
    private String name;
    @Min(20)//不小于20
    private int age;
}

應(yīng)用場景不同

@Value 和 @ConfigurationProperties 兩個注解之間,并沒有明顯的優(yōu)劣之分,它們只是適合的應(yīng)用場景不同而已。

  • 若只是獲取配置文件中的某項值,則推薦使用 @Value 注解;
  • 若專門編寫了一個 JavaBean 來和配置文件進行映射,則建議使用 @ConfigurationProperties 注解。

在選用時,根據(jù)實際應(yīng)用場景選擇合適的注解能達到事半功倍的效果。

到此這篇關(guān)于SpringBoot @Value與@ConfigurationProperties二者有哪些區(qū)別的文章就介紹到這了,更多相關(guān)SpringBoot @Value與@ConfigurationProperties內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java Config下的Spring Test幾種方式實例詳解

    Java Config下的Spring Test幾種方式實例詳解

    這篇文章主要介紹了Java Config下的Spring Test方式實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Java Thread之Sleep()使用方法總結(jié)

    Java Thread之Sleep()使用方法總結(jié)

    這篇文章主要介紹了Java Thread之Sleep()使用方法總結(jié),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Java Array.sort()源碼分析講解

    Java Array.sort()源碼分析講解

    Arrays類中有一個sort()方法,該方法是Arrays類的靜態(tài)方法,在需要對數(shù)組進行排序時,非常的好用。但是sort()的參數(shù)有好幾種,下面我就為大家一一介紹,這幾種形式的用法
    2022-08-08
  • Springboot集成Quartz實現(xiàn)定時任務(wù)代碼實例

    Springboot集成Quartz實現(xiàn)定時任務(wù)代碼實例

    這篇文章主要介紹了Springboot集成Quartz實現(xiàn)定時任務(wù)代碼實例,任務(wù)是有可能并發(fā)執(zhí)行的,若Scheduler直接使用Job,就會存在對同一個Job實例并發(fā)訪問的問題,而JobDetail?&?Job方式,Scheduler都會根據(jù)JobDetail創(chuàng)建一個新的Job實例,這樣就可以規(guī)避并發(fā)訪問問題
    2023-09-09
  • 使用Spring Boot創(chuàng)建Web應(yīng)用程序的示例代碼

    使用Spring Boot創(chuàng)建Web應(yīng)用程序的示例代碼

    本篇文章主要介紹了使用Spring Boot創(chuàng)建Web應(yīng)用程序的示例代碼,我們將使用Spring Boot構(gòu)建一個簡單的Web應(yīng)用程序,并為其添加一些有用的服務(wù),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • JDBC獲取數(shù)據(jù)庫連接由淺入深

    JDBC獲取數(shù)據(jù)庫連接由淺入深

    大家好,本篇文章主要講的是JDBC獲取數(shù)據(jù)庫連接由淺入深,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • 詳解Java設(shè)計模式——迭代器模式

    詳解Java設(shè)計模式——迭代器模式

    這篇文章主要介紹了Java設(shè)計模式——迭代器模式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • springBoot整合redis做緩存具體操作步驟

    springBoot整合redis做緩存具體操作步驟

    緩存主要是將數(shù)據(jù)存在計算機的內(nèi)存當(dāng)中,以便于在使用的時候是可以實現(xiàn)快速讀取使用,它的快也是相對于硬盤讀取而言,這篇文章主要給大家介紹了關(guān)于springBoot整合redis做緩存的具體操作步驟,需要的朋友可以參考下
    2024-04-04
  • Java排序算法中的快速排序算法實現(xiàn)

    Java排序算法中的快速排序算法實現(xiàn)

    這篇文章主要介紹了Java排序算法中的快速排序算法實現(xiàn),通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對這兩部分數(shù)據(jù)分別進行快速排序,需要的朋友可以參考下
    2023-12-12
  • Java之多個線程順序循環(huán)執(zhí)行的幾種實現(xiàn)

    Java之多個線程順序循環(huán)執(zhí)行的幾種實現(xiàn)

    這篇文章主要介紹了Java之多個線程順序循環(huán)執(zhí)行的幾種實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09

最新評論