最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中@RequiredArgsConstructor使用詳解

 更新時間:2025年05月17日 14:27:31   作者:Jin-進(jìn)  
這篇文章主要介紹了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)造方法將其進(jìn)行依賴注入

三、@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)更多詳細(xì)信息,請參閱有關(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)文章

  • 基于Process#waitFor()阻塞問題的解決

    基于Process#waitFor()阻塞問題的解決

    這篇文章主要介紹了Process#waitFor()阻塞問題的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 關(guān)于Java中Json的各種處理

    關(guān)于Java中Json的各種處理

    這篇文章主要介紹了關(guān)于Java中Json的各種處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java實現(xiàn)兩個隨機(jī)數(shù)組合并進(jìn)行排序的方法

    Java實現(xiàn)兩個隨機(jī)數(shù)組合并進(jìn)行排序的方法

    本文主要介紹了Java實現(xiàn)兩個隨機(jī)數(shù)組合并進(jìn)行排序的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 教你幾個?Java?編程中使用技巧

    教你幾個?Java?編程中使用技巧

    枯燥的編程中總得有些樂趣,今天我們不談?wù)撃切└呱畹募寄埽棠銕讉€在編程中的奇技淫巧,說不定在某些時候還能炫耀一番呢,今天小編教你幾個?Java?編程中使用技巧,感興趣的朋友參考下吧
    2022-12-12
  • 手把手帶你掌握SpringBoot RabbitMQ延遲隊列

    手把手帶你掌握SpringBoot RabbitMQ延遲隊列

    RabbitMQ 是一個由Erlang語言開發(fā)的AMQP的開源實現(xiàn),支持多種客戶端。用于在分布式系統(tǒng)中存儲轉(zhuǎn)發(fā)消息,在易用性、擴(kuò)展性、高可用性等方面表現(xiàn)不俗,下文將帶你深入了解 RabbitMQ 延遲隊列
    2021-09-09
  • Java中單例模式詳解

    Java中單例模式詳解

    這篇文章主要介紹了Java中單例模式詳解,單例模式包括了懶漢式單例、餓漢式單例、登記式單例三種,想要了解的朋友可以了解一下。
    2016-11-11
  • mybatis@insert?注解如何判斷insert或是update

    mybatis@insert?注解如何判斷insert或是update

    這篇文章主要介紹了mybatis@insert?注解如何判斷insert或是update,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Spring Task 動態(tài)修改任務(wù)執(zhí)行計劃cron方式

    Spring Task 動態(tài)修改任務(wù)執(zhí)行計劃cron方式

    這篇文章主要介紹了Spring Task 動態(tài)修改任務(wù)執(zhí)行計劃cron方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • MyBatis ORM映射方式示例詳解

    MyBatis ORM映射方式示例詳解

    MyBatis作為一種靈活且強(qiáng)大的ORM框架,提供了多種映射方式,包括基于XML的映射、基于注解的映射以及混合映射,這篇文章主要介紹了MyBatis ORM映射方式詳解,需要的朋友可以參考下
    2024-12-12
  • SpringBoot整合數(shù)據(jù)庫訪問層的實戰(zhàn)

    SpringBoot整合數(shù)據(jù)庫訪問層的實戰(zhàn)

    本文主要介紹了SpringBoot整合數(shù)據(jù)庫訪問層的實戰(zhàn),主要包含JdbcTemplate和mybatis框架的整合應(yīng)用,具有一定的參考價值,感興趣的可以了解一下
    2022-03-03

最新評論

梨树县| 崇义县| 深泽县| 西充县| 凌海市| 屏南县| 安岳县| 澄城县| 荣成市| 郑州市| 沙坪坝区| 泾川县| 藁城市| 沿河| 双桥区| 新邵县| 洪雅县| 石狮市| 怀宁县| 怀远县| 蒙山县| 焦作市| 云林县| 察哈| 苍山县| 五大连池市| 紫云| 金阳县| 奉化市| 陕西省| 东山县| 商城县| 奎屯市| 通辽市| 松江区| 江油市| 大港区| 甘南县| 桃源县| 乌恰县| 富川|