連技術大拿都偷偷在用的偷懶神器Lombok

記得剛畢業做研發時旁邊坐的是個浙大的技術大牛,上班大部分的時間都是在看技術博客,研究新技術,但是交給他的任務又都是提前完成的。很幸運的是跟他成爲了飯友,一起吃飯的路上就會像個徒弟一樣,聽他說今天又研究出了一個新技術,或者是今天用一個算法解決了一個難題,老實說剛畢業的我沒聽懂那些深奧的東西。不過印象比較深刻的是,他從來不用複雜的代碼解決簡單的問題,所以他做出來的功能很少出現BUG,同時他也有更多的時間去充電自己(現在已經是一位資深的TL了)。
當然這個Lombok插件不是那位大牛告訴我(我剛畢業那會兒還沒有spring boot,就是簡單的spring MVC),後面微服務盛行自己在學習spring boot框架的時候偶然間看到的,後來發現公司裏有一些技術比較牛逼的同事也在用,想必應該是一個好傢伙
在這裏插入圖片描述

什麼是Lombok?
Lombok以簡單的註解形式來簡化java代碼,減少冗餘,提高開發人員的開發效率。例如開發中創建javabean,需要添加相應的getter/setter、構造器、equals等方法,而且當屬性過多時會出現大量的getter/setter方法。通過Lombok註解的方式,在編譯時自動爲屬性生成getter/setter、構造器、equals等方法,這樣代碼看起來非常簡潔,瞬間提高程序員level +n次方有木有!!!接下來一探究竟如何:
一、插件安裝
有兩種方式:
1、IDEA的官方插件倉庫和GitHub裏lombok-intellij-plugin倉庫中的release包;
2、2、通過插件庫下載安裝
因爲第一種要考慮版本衝突的問題,所以就直接介紹第二種方式
在這裏插入圖片描述
可能會有人遇到下面的情況,花少在度娘上找了一百種方法都沒搞定(包括還用第一種方式,頁面都打不開),後來發現是網絡的問題,把無線改成有線就OK了
在這裏插入圖片描述

二、Maven依賴

org.projectlombok lombok provided

三、註釋解釋(篇幅原因,實例就不具體寫了,大家網上度一下或者靠意想吧)
1、@Data
註解在類上,會爲類的所有屬性自動生成getter/setter、toString、equals、hashCode方法。如果爲final屬性,則不會爲該屬性生成setter方法。其實@Data相當於@Getter、@Setter、@RequiredArgsConstructor、@ToString和@EqualsAndHashCode的集合
2、@Getter / @Setter
可以註解在類和屬性上。註解在類上,會爲類的所有屬性生成getter方法,會爲類的所有非final屬性生成setter方法。註解在屬性上,可以爲當前屬性生成getter/setter方法
3、@EqualsAndHashCode
註解在類上,默認會使用非靜態(non-static)和非瞬態(non-transient)屬性來生成equals、canEqual和hashCode方法,也能通過exclude註解來排除一些屬性
4、@ToString
註解在類上,會爲類的生成toString方法。默認會輸出類名、所有屬性(按照屬性定義順序),用逗號分隔。通過將includeFieldNames參數設爲true,就能同時輸出屬性名
5、@NoArgsConstructor / @RequiredArgsConstructor / @AllArgsConstructor
註解在類上,會爲類的生成無參構造器、部分參數構造器、全參構造器。Lombok沒法實現多種參數構造器的重載
6、@NonNull
註解在屬性、方法或構造器上,Lombok會生成一個空檢查語句
7、@Cleanup
註解在本地變量中,可以確保在代碼執行路徑退出當前範圍之前自動清理給定資源
8、@Log
註解在類上,Lombok會爲當前類生成日誌記錄器,名爲log

四、優缺點
1、優點:
能夠通過註解的方式減少代碼編寫,提高了開發效率;
讓代碼變得簡潔,不用過多的去關注相應的方法;
屬性做修改時,不需要爲這些屬性重新生成新的方法等
2、缺點:
需要安裝插件
不支持多種參數構造器的重載

當然每個程序員都會有自己的習慣,並不是說會用這些工具就是技術大拿,所謂的技術大拿不過是更加了解技術的本質,敢於去嘗試更多前沿的技術以及攻克更多的難題。舉個很簡單的例子,JAVA面對對象中最簡單的繼承、封裝、多態,很多程序員也能難在自己的代碼中運用貫通
在這裏插入圖片描述

花有重開日,人無再少年 → 我是花少【少宮主花無缺】#更新不斷,創作不易#走過路過不不白piao,留下關注和點贊(公衆號同名)@all