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

Java中@RequiredArgsConstructor使用詳解

 更新時間:2025年05月17日 14:27:31   作者:Jin-進  
這篇文章主要介紹了Java中@RequiredArgsConstructor使用的相關(guān)資料,@RequiredArgsConstructor是Lombok庫提供的一個注解,用于自動生成一個包含所有final字段和非空字段的構(gòu)造函數(shù),需要的朋友可以參考下

一、什么是@RequiredArgsConstructor?

@RequiredArgsConstructor是Lombok的一個注解,簡化了我們對@Autowired書寫,我們在寫Controller層或者Service層的時候,總是需要注入很多mapper接口或者service接口,如果每個接口都寫上@Autowired,這樣看起來就會很繁瑣,@RequiredArgsConstructor注解可以代替@Autowired注解

二、@RequiredArgsConstructor怎么使用?

2.1、導(dǎo)包

<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
   <version>1.18.22</version>
</dependency>

2.2、使用

將@RequiredArgsConstructor寫在類上面

注意點

1、聲明的變量必須加上final修飾

2、基于構(gòu)造方法為屬性賦值,容器通過調(diào)用類的構(gòu)造方法將其進行依賴注入

三、@AllArgsConstructor和@RequiredArgsConstructor區(qū)別

1、@AllArgsConstructor 生成一個包含所有字段的構(gòu)造方法,如果使用了@Value注入,@Value注入會失效,原因是因為@Value注解是通過對象的set方法賦值的,構(gòu)造方法的執(zhí)行還在set方法之前,所以在構(gòu)造方法中使用變量會變量為null。
2、@RequiredArgsConstructor會將類的每一個final字段或者non-null字段生成一個構(gòu)造方法
總結(jié):
	@AllArgsConstructor和@RequiredArgsConstructor都可以用來替代@Autowired寫法,區(qū)別在于@RequiredArgsConstructor必須要有final修飾,如果有@Value注解,@RequiredArgsConstructor修飾可以成功注入,@AllArgsConstructor修飾會注入失敗

四、@NoArgsConstructor、@RequiredArgsConstructor和@AllArgsConstructor

1、@NoArgsConstructor

@NoArgsConstructor將生成一個沒有參數(shù)的構(gòu)造函數(shù)。如果這是不可能的(因為最終字段),將導(dǎo)致編譯器錯誤,除非@NoArgsConstructor(force = true)使用,然后使用0/ false/ 初始化所有最終字段null。對于具有約束的字段(如@NonNull字段),不會生成任何檢查,因此請注意,在稍后正確初始化這些字段之前,通常不會滿足這些約束。某些java構(gòu)造(例如hibernate和Service Provider Interface)需要no-args構(gòu)造函數(shù)。此注釋主要與@Data生成注釋的其他構(gòu)造函數(shù)之一或其中一個結(jié)合使用。

2、@RequiredArgsConstructor

@RequiredArgsConstructor為每個需要特殊處理的字段生成一個帶有1個參數(shù)的構(gòu)造函數(shù)。所有未初始化的final字段都會獲得一個參數(shù),以及標(biāo)記為@NonNull在聲明它們的位置未初始化的任何字段。對于標(biāo)記有的字段@NonNull,還會生成顯式空檢查。構(gòu)造函數(shù)將拋出一個NullPointerExceptionif用于標(biāo)記為@NonNullcontains 的字段的任何參數(shù)null。參數(shù)的順序與字段在類中的顯示順序相匹配。

3、@AllArgsConstructor

@AllArgsConstructor為類中的每個字段生成一個帶有1個參數(shù)的構(gòu)造函數(shù)。標(biāo)記為@NonNull結(jié)果的字段將檢查這些參數(shù)。

4、總結(jié)

	這些注釋中的每一個都允許使用替代形式,其中生成的構(gòu)造函數(shù)始終是私有的,并且生成包圍私有構(gòu)造函數(shù)的附加靜態(tài)工廠方法。通過提供staticName注釋的值來啟用此模式,如下所示:@RequiredArgsConstructor(staticName="of")。與普通構(gòu)造函數(shù)不同,這種靜態(tài)工廠方法將推斷泛型。這意味著您的API用戶可以寫入MapEntry.of("foo", 5)而不是更長時間new MapEntry<String, Integer>("foo", 5)。

	要在生成的構(gòu)造函數(shù)上添加注釋,可以使用onConstructor=@__({@AnnotationsHere}),但要小心; 這是一個實驗性功能。有關(guān)更多詳細信息,請參閱有關(guān)onX功能的文檔。

	這些注釋會跳過靜態(tài)字段。

	與大多數(shù)其他lombok注釋不同,顯式構(gòu)造函數(shù)的存在不會阻止這些注釋生成自己的構(gòu)造函數(shù)。這意味著您可以編寫自己的專用構(gòu)造函數(shù),并讓lombok生成樣板文件。如果出現(xiàn)沖突(您的一個構(gòu)造函數(shù)最終使用與lombok生成的簽名相同的簽名),則會發(fā)生編譯器錯誤。

總結(jié)

到此這篇關(guān)于Java中@RequiredArgsConstructor使用詳解的文章就介紹到這了,更多相關(guān)@RequiredArgsConstructor詳解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java中的三種取整函數(shù)總結(jié)

    java中的三種取整函數(shù)總結(jié)

    下面小編就為大家?guī)硪黄猨ava中的三種取整函數(shù)總結(jié)。希望對大家有所幫助。一起跟隨小編過來看看吧,祝大家游戲愉快哦
    2016-11-11
  • SpringBoot整合jasypt實現(xiàn)數(shù)據(jù)加密的步驟

    SpringBoot整合jasypt實現(xiàn)數(shù)據(jù)加密的步驟

    聽說過jasypt嗎?它可是一個超級流行的Java庫哦,提供了簡單又高效的加密和解密接口,整合jasypt后,我們的SpringBoot應(yīng)用就能輕松處理敏感數(shù)據(jù)的加密和解密,而不必為復(fù)雜的加密算法頭疼啦,下面給大家介紹SpringBoot整合jasypt實現(xiàn)數(shù)據(jù)加密的步驟,感興趣的朋友一起看看吧
    2025-04-04
  • spring framework體系結(jié)構(gòu)及模塊jar依賴關(guān)系詳解

    spring framework體系結(jié)構(gòu)及模塊jar依賴關(guān)系詳解

    在本篇文章里小編給大家整理的是關(guān)于spring framework體系結(jié)構(gòu)及模塊jar依賴關(guān)系,對此有興趣的朋友們可以學(xué)習(xí)下。
    2019-09-09
  • Springboot項目打包如何將依賴的jar包輸出到指定目錄

    Springboot項目打包如何將依賴的jar包輸出到指定目錄

    公司要對springboot項目依賴的jar包進行升級,但是遇到一個問題,項目打包之后,沒辦法看到他里面依賴的jar包,版本到底是不是升上去了,沒辦法看到,下面通過本文給大家分享Springboot項目打包如何將依賴的jar包輸出到指定目錄,感興趣的朋友一起看看吧
    2024-05-05
  • MyBatis插入數(shù)據(jù)返回主鍵的介紹

    MyBatis插入數(shù)據(jù)返回主鍵的介紹

    今天小編就為大家分享一篇關(guān)于MyBatis插入數(shù)據(jù)返回主鍵的介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Java實現(xiàn)調(diào)用外部程序的示例代碼

    Java實現(xiàn)調(diào)用外部程序的示例代碼

    本文主要介紹了Java實現(xiàn)調(diào)用外部程序的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 如何在Spring data中使用r2dbc詳解

    如何在Spring data中使用r2dbc詳解

    這篇文章主要給大家介紹了關(guān)于如何在Spring data中使用r2dbc的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java中Controller、Service、Dao/Mapper層的區(qū)別與用法

    Java中Controller、Service、Dao/Mapper層的區(qū)別與用法

    在Java開發(fā)中,通常會采用三層架構(gòu)(或稱MVC架構(gòu))來劃分程序的職責(zé)和功能,分別是Controller層、Service層、Dao/Mapper層,本文將詳細給大家介紹了三層的區(qū)別和用法,需要的朋友可以參考下
    2023-05-05
  • 如何利用Ganymed SSH-2模擬SSH操作

    如何利用Ganymed SSH-2模擬SSH操作

    這幾天看SFTP資料時,無意中看到了Ganymed SSH-2,寫了個簡單demo,通過,感覺挺好用的,下面就和大家分享下。需要的朋友可以過來參考參考
    2013-08-08
  • Java中ArrayList集合的常用方法大全

    Java中ArrayList集合的常用方法大全

    這篇文章主要給大家介紹了關(guān)于Java中ArrayList集合的常用方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評論