Lombok插件安裝(IDEA)及配置jar包使用詳解
點(diǎn)擊進(jìn)入Lombok官網(wǎng)下載Lombok jar包
使用Lombok可能需要注意的地方
(1)、當(dāng)你的IDE是Idea時,要注意你的Idea是支持Lombok的,如果不支持請更換高版本嘗試(這里采用2018 3.3)。
(2)、在使用Lombok時,你的編輯器可能會報(bào)錯,這時請?jiān)谀愕腎DE中安裝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)去即可。
1、Lombok簡介
Lombok能以簡單的注解形式來簡化java代碼,提高開發(fā)人員的開發(fā)效率。例如開發(fā)中經(jīng)常需要寫的javabean,都需要花時間去添加相應(yīng)的getter/setter,也許還要去寫構(gòu)造器、equals等方法,而且需要維護(hù),當(dāng)屬性多時會出現(xiàn)大量的getter/setter方法,這些顯得很冗長也沒有太多技術(shù)含量,一旦修改屬性,就容易出現(xiàn)忘記修改對應(yīng)方法的失誤。
Lombok能通過注解的方式,在編譯時自動為屬性生成構(gòu)造器、getter/setter、equals、hashcode、toString等方法。出現(xiàn)的神奇就是在源碼中沒有g(shù)etter和setter方法,但是在編譯生成的字節(jié)碼文件中有g(shù)etter和setter方法。這樣就省去了手動重建這些代碼的麻煩,使代碼看起來更簡潔些。
使用Lombok的原因:
根據(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í)行效率。
2、IDEA中安裝Lombok插件
選擇【File】-> 【Settings】->【Plugins】 –> 輸入Lombok,按回車鍵進(jìn)行搜索,單擊【Install】進(jìn)行安裝,安裝完成后點(diǎn)擊【Apply】和【OK】,然后重啟IDEA即可安裝成功。
注意:在重啟前建議勾選結(jié)開啟【Annotation Processors】下的【Enable annotation processing】(Ctrl+Shift+A鍵,輸入Annotation Processors回車搜索即可找到該選項(xiàng))。
3、使用LomBok
在Lombok的官網(wǎng)有一個install選項(xiàng),我們點(diǎn)開它會看到多種安裝方式,可以根據(jù)自己的項(xiàng)目需求來選擇使用哪種方式,這里以Maven為例:
點(diǎn)擊Maven會看到一組坐標(biāo):
根據(jù)它的提示我們將這一組坐標(biāo)添加到我們的pom文件中:
<dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.4</version> <scope>provided</scope> </dependency> </dependencies>
添加進(jìn)去以后點(diǎn)擊import change,等待Idea把jar包下載完就可以在項(xiàng)目中使用了。
4、Lombok常用注解詳解
@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ù);
5、示例代碼(僅簡單舉一個使用例子)
不使用Lombok(傳統(tǒng)方法)
package com.user; public class UserInfo { private String userid; private String username; private String userpass; private String userphone; private String useremail; private String usercard; private String useraddress; @Override public String toString() { return "UserInfo{" + "userid='" + userid + '\'' + ", username='" + username + '\'' + ", userpass='" + userpass + '\'' + ", userphone='" + userphone + '\'' + ", useremail='" + useremail + '\'' + ", usercard='" + usercard + '\'' + ", useraddress='" + useraddress + '\'' + '}'; } public String getUserid() { return userid; } public void setUserid(String userid) { this.userid = userid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getUserpass() { return userpass; } public void setUserpass(String userpass) { this.userpass = userpass; } public String getUserphone() { return userphone; } public void setUserphone(String userphone) { this.userphone = userphone; } public String getUseremail() { return useremail; } public void setUseremail(String useremail) { this.useremail = useremail; } public String getUsercard() { return usercard; } public void setUsercard(String usercard) { this.usercard = usercard; } public String getUseraddress() { return useraddress; } public void setUseraddress(String useraddress) { this.useraddress = useraddress; } }
使用Lombok
package com.user; import lombok.AccessLevel; import lombok.Getter; import lombok.Setter; @Setter @Getter public class UserInfo { private String userid; private String username; private String userpass; private String userphone; private String useremail; private String usercard; private String useraddress; }
只給單個參數(shù)添加
package com.user; import lombok.Getter; import lombok.Setter; public class UserInfo { @Getter@Setter private String userid; private String username; private String userpass; private String userphone; private String useremail; private String usercard; private String useraddress; }
到此這篇關(guān)于Lombok插件安裝(IDEA)及配置jar包使用詳解的文章就介紹到這了,更多相關(guān)Lombok插件安裝使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django 1.10以上版本 url 配置注意事項(xiàng)詳解
這篇文章主要介紹了Django 1.10以上版本 url 配置注意事項(xiàng)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08Pytorch中expand()的使用(擴(kuò)展某個維度)
這篇文章主要介紹了Pytorch中expand()的使用(擴(kuò)展某個維度),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07Python圖像處理之圖像的讀取、顯示與保存操作【測試可用】
這篇文章主要介紹了Python圖像處理之圖像的讀取、顯示與保存操作,結(jié)合實(shí)例形式分析了Python使用PIL模塊、scipy和matplotlib模塊進(jìn)行圖像讀寫、顯示等相關(guān)操作技巧,需要的朋友可以參考下2019-01-01pycharm使用技巧之自動調(diào)整代碼格式總結(jié)
這篇文章主要給大家介紹了關(guān)于pycharm使用技巧之自動調(diào)整代碼格式總結(jié)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11python處理文本文件實(shí)現(xiàn)生成指定格式文件的方法
這篇文章主要介紹了python處理文本文件實(shí)現(xiàn)生成指定格式文件的方法,有一定的實(shí)用價值,需要的朋友可以參考下2014-07-07Python中的Pandas?時間函數(shù)?time?、datetime?模塊和時間處理基礎(chǔ)講解
Python?中提供了對時間日期的多種多樣的處理方式,主要是在?time?和?datetime?這兩個模塊里,這篇文章主要介紹了Python中的Pandas?時間函數(shù)?time?、datetime?模塊和時間處理基礎(chǔ),需要的朋友可以參考下2023-03-03