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

解決Lombok注解不起作用的問題

 更新時間:2021年08月03日 09:11:27   作者:IT學(xué)習(xí)日記  
這篇文章主要介紹了解決Lombok注解不起作用的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Lombok注解不起作用

場景:

減少實(shí)體類中如Getter,Setter方法的書寫

原因:

lombok是一個第三方插件,我們使用時需要進(jìn)行兩個步驟(兩個步驟缺一不可):

1:引入lombok依賴

2: 安裝lombok插件

作用:

Lombok是一個第三方插件,通過它我們可以直接書寫注解來代替原來的getter,setter,toString等方法。

深入理解Lombok

說道Lombok,可能會鮮為人知。但是在實(shí)際的開發(fā)中,它起到了很大的作用,話不多說,直入正題:

一、Lombok是什么

現(xiàn)在看一下Lombok官方對其進(jìn)行的解釋:Lombok官網(wǎng):https://projectlombok.org

第一句話,Lombok項(xiàng)目是一種自動接通你的編輯器和構(gòu)建工具的一個Java庫。接著,不用再一次寫額外的getter或者equals方法。翻譯到這里其實(shí)就可以,后面是對Lombok早期應(yīng)用的介紹。通過這兩句話不難理解lombok其實(shí)就是幫助我們編寫getter或者equals方法的一個“工具”。其實(shí)他的魅力并不在于幫助我們簡單的編寫對應(yīng)的getter或者更多的方法,還有一點(diǎn)在于,當(dāng)我們的字段發(fā)生改變時,lombok也會對相應(yīng)的getter方法進(jìn)行改變。

二、為什么要在自己的項(xiàng)目中使用Lombok

要回答這個問題,僅僅知道什么是Lombok是不夠的。在講解原理之前我想再提一點(diǎn) ,這也是為什么要使用Lombok的關(guān)鍵所在:根據(jù)Lombok的使用規(guī)則,如果想要使用Lombok就需要刪除在項(xiàng)目中(JavaBean)存在的已經(jīng)生成的getter方法setter方法以及equals和hash方法,當(dāng)然Lombok也提供了對打印日志的處理。這樣在使用Lombok以后就會大大減少項(xiàng)目中的代碼量,同時由于Lombok有自動修改的功能,這也提供了項(xiàng)目中代碼的執(zhí)行效率。

綜上所述,使用Lombok的兩點(diǎn)主要原因就是:

(1)、簡化冗余的JavaBean代碼;

(2)、大大提高JavaBean中方法的執(zhí)行效率;

三、如何使用LomBok

在Lombok的官網(wǎng)中,有一個install選項(xiàng),我們點(diǎn)開它會看到多種安裝方式:

大家可以根據(jù)自己的項(xiàng)目需求來選擇使用哪種方式,這里以Maven為例:

點(diǎn)擊Maven會看到一組坐標(biāo):

根據(jù)它的提示我們將這一組坐標(biāo)添加到我們的pom文件中:

添加進(jìn)去以后點(diǎn)擊import change,等待Idea把jar包下載完就可以在項(xiàng)目中使用了。

四、Lombok實(shí)現(xiàn)原理

Lombok實(shí)現(xiàn)了JSR 269 API規(guī)范,javac在Java6開始支持這一規(guī)范,只要程序?qū)崿F(xiàn)了該API,就能在javac運(yùn)行的時候得到調(diào)用,那么Lombok在編譯時使用的就是javac,具體流程如下:

首先是項(xiàng)目的源代碼文件,在經(jīng)過編譯處理以后,lombok會使用自己的抽象語法樹去進(jìn)行注解的匹配,如果在項(xiàng)目中的某一個類中使用了lombok中的注解,那么注解編譯器就會自動去匹配項(xiàng)目中的注解對應(yīng)到在lombok語法樹中的注解文件,并經(jīng)過自動編譯匹配來生成對應(yīng)類中的getter或者setter方法,達(dá)到簡化代碼的目的。執(zhí)行順序就如上圖的疊放順序。

五、Lombok注解詳解

Lombok主要常用的注解有:

@Data,@getter,@setter,@NoArgsConstructor,@AllArgsConstructor,@ToString,@EqualsAndHashCode,@Slf4j,@Log4j。我們一個一個來看:

  • @Data注解:在JavaBean或類JavaBean中使用,這個注解包含范圍最廣,它包含getter、setter、NoArgsConstructor注解,即當(dāng)使用當(dāng)前注解時,會自動生成包含的所有方法;
  • @getter注解:在JavaBean或類JavaBean中使用,使用此注解會生成對應(yīng)的getter方法;
  • @setter注解:在JavaBean或類JavaBean中使用,使用此注解會生成對應(yīng)的setter方法;
  • @NoArgsConstructor注解:在JavaBean或類JavaBean中使用,使用此注解會生成對應(yīng)的無參構(gòu)造方法;
  • @AllArgsConstructor注解:在JavaBean或類JavaBean中使用,使用此注解會生成對應(yīng)的有參構(gòu)造方法;
  • @ToString注解:在JavaBean或類JavaBean中使用,使用此注解會自動重寫對應(yīng)的toStirng方法;
  • @EqualsAndHashCode注解:在JavaBean或類JavaBean中使用,使用此注解會自動重寫對應(yīng)的equals方法和hashCode方法;
  • @Slf4j:在需要打印日志的類中使用,當(dāng)項(xiàng)目中使用了slf4j打印日志框架時使用該注解,會簡化日志的打印流程,只需調(diào)用info方法即可;
  • @Log4j:在需要打印日志的類中使用,當(dāng)項(xiàng)目中使用了log4j打印日志框架時使用該注解,會簡化日志的打印流程,只需調(diào)用info方法即可;

在使用以上注解需要處理參數(shù)時,處理方法如下(以@ToString注解為例,其他注解同@ToString注解):

@ToString(exclude="column")

意義:排除column列所對應(yīng)的元素,即在生成toString方法時不包含column參數(shù);

@ToString(exclude={"column1","column2"})

意義:排除多個column列所對應(yīng)的元素,其中間用英文狀態(tài)下的逗號進(jìn)行分割,即在生成toString方法時不包含多個column參數(shù);

@ToString(of="column")

意義:只生成包含column列所對應(yīng)的元素的參數(shù)的toString方法,即在生成toString方法時只包含column參數(shù);;

@ToString(of={"column1","column2"})

意義:只生成包含多個column列所對應(yīng)的元素的參數(shù)的toString方法,其中間用英文狀態(tài)下的逗號進(jìn)行分割,即在生成toString方法時只包含多個column參數(shù);

六、使用Lombok可能需要注意的地方

(1)、當(dāng)你的IDE是Idea時,要注意你的Idea是支持Lombok的,如果不支持請更換2017版本嘗試。

(2)、在使用Lombok時,你的編輯器可能會報錯,這時請在你的IDE中安裝Lombok插件(如果使用的Idea則直接搜索Lombok插件,選擇星級最高的,直接安裝就是,其他Ide類同)。

(3)、參數(shù)的處理往往都是根據(jù)項(xiàng)目需求來進(jìn)行,請妥善處理參數(shù)。

(4)、如果你無法訪問Lombok官網(wǎng),你可以從這篇博文中將Maven坐標(biāo)照著自己打進(jìn)去,或者你也可以訪問Maven的中央倉庫搜索Lombok,將Maven坐標(biāo)復(fù)制進(jìn)去即可。

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C# log4net使用案例詳解

    C# log4net使用案例詳解

    這篇文章主要介紹了C# log4net使用案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Java之SpringCloud Eurka注冊錯誤解決方案

    Java之SpringCloud Eurka注冊錯誤解決方案

    這篇文章主要介紹了Java之SpringCloud Eurka注冊錯誤解決方案,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 盤點(diǎn)幾種常見的java排序算法

    盤點(diǎn)幾種常見的java排序算法

    所謂排序就是使一串記錄,按照其中的某個或某些關(guān)鍵字的大小,遞增或遞減的排列起來的操作,下面這篇文章主要給大家介紹了幾種常見的java排序算法的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • IDEA 2020.1打開時閃退的問題及解決方法(完美解決方法)

    IDEA 2020.1打開時閃退的問題及解決方法(完美解決方法)

    這篇文章主要介紹了IDEA 2020.1打開時閃退問題及解決方法,本文給大家分享我的處理方案,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • SpringBoot實(shí)現(xiàn)版本升級到2.7.18

    SpringBoot實(shí)現(xiàn)版本升級到2.7.18

    這篇文章主要介紹了SpringBoot實(shí)現(xiàn)版本升級到2.7.18全過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • SSM框架整合之junit測試的方法

    SSM框架整合之junit測試的方法

    本篇文章主要介紹了SSM框架整合之junit測試的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • SpringBoot深入分析webmvc和webflux的區(qū)別

    SpringBoot深入分析webmvc和webflux的區(qū)別

    這篇文章主要介紹了SpringBoot深入分析webmvc和webflux的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-02-02
  • 深入理解java long 存儲時間戳

    深入理解java long 存儲時間戳

    存儲時間打算用時間戳來存儲,打算用long類型來代表時間戳,這篇文章主要介紹了深入理解java long 存儲時間戳,非常具有實(shí)用價值,需要的朋友可以參考下
    2018-10-10
  • 如何獲取?Spring?heapdump中的明文密碼

    如何獲取?Spring?heapdump中的明文密碼

    Actuator是Spring?Boot提供的應(yīng)用系統(tǒng)監(jiān)控的開源框架,在攻防場景里經(jīng)常會遇到Actuator配置不當(dāng)?shù)那闆r,攻擊者可以直接下載heapdump堆轉(zhuǎn)儲文件,本文介紹如何獲取?Spring?heapdump中的密碼明文,需要的朋友可以參考下
    2022-07-07
  • 解決mybatis-plus使用jdk8的LocalDateTime 查詢時報錯的方法

    解決mybatis-plus使用jdk8的LocalDateTime 查詢時報錯的方法

    這篇文章主要介紹了解決mybatis-plus使用jdk8的LocalDateTime 查詢時報錯的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08

最新評論