點擊進入Lombok官網下載Lombok jar包
使用Lombok可能需要注意的地方
????(1)當你的IDE是Idea時,要注意你的Idea是支持Lombok的,如果不支持請更換高版本嘗試(這里采用2018 3.3)。
???(2)在使用Lombok時,你的編輯器可能會報錯,這時請在你的IDE中安裝Lombok插件(如果使用的Idea則直接搜索Lombok插件,選擇星級最高的,直接安裝就是,其他Ide類同)。
???(3)參數的處理往往都是根據項目需求來進行,請妥善處理參數。
???(4)如果你無法訪問Lombok官網,你可以從這篇博文中將Maven坐標照著自己打進去,或者你也可以訪問Maven的中央倉庫搜索Lombok,將Maven坐標復制進去即可。
1、Lombok簡介
Lombok能以簡單的注解形式來簡化java代碼,提高開發人員的開發效率。例如開發中經常需要寫的javabean,都需要花時間去添加相應的getter/setter,也許還要去寫構造器、equals等方法,而且需要維護,當屬性多時會出現大量的getter/setter方法,這些顯得很冗長也沒有太多技術含量,一旦修改屬性,就容易出現忘記修改對應方法的失誤。
Lombok能通過注解的方式,在編譯時自動為屬性生成構造器、getter/setter、equals、hashcode、toString等方法。出現的神奇就是在源碼中沒有getter和setter方法,但是在編譯生成的字節碼文件中有getter和setter方法。這樣就省去了手動重建這些代碼的麻煩,使代碼看起來更簡潔些。
使用Lombok的原因:
根據Lombok的使用規則,如果想要使用Lombok就需要刪除在項目中(JavaBean)存在的已經生成的getter方法setter方法以及equals和hash方法,當然Lombok也提供了對打印日志的處理。這樣在使用Lombok以后就會大大減少項目中的代碼量,同時由于Lombok有自動修改的功能,這也提供了項目中代碼的執行效率。
???綜上所述,使用Lombok的兩點主要原因就是:
????????(1)簡化冗余的JavaBean代碼。
????????(2)大大提高JavaBean中方法的執行效率。
2、IDEA中安裝Lombok插件
選擇【File】-> 【Settings】->【Plugins】?–> 輸入Lombok,按回車鍵進行搜索,單擊【Install】進行安裝,安裝完成后點擊【Apply】和【OK】,然后重啟IDEA即可安裝成功。
注意:在重啟前建議勾選結開啟【Annotation Processors】下的【Enable annotation?processing】(Ctrl+Shift+A鍵,輸入Annotation Processors回車搜索即可找到該選項)。
?
3、使用LomBok
????在Lombok的官網有一個install選項,我們點開它會看到多種安裝方式,可以根據自己的項目需求來選擇使用哪種方式,這里以Maven為例:
點擊Maven會看到一組坐標:
根據它的提示我們將這一組坐標添加到我們的pom文件中:
<dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.4</version><scope>provided</scope></dependency>
</dependencies>
添加進去以后點擊import change,等待Idea把jar包下載完就可以在項目中使用了。
?
4、Lombok常用注解詳解
@Data注解:
在JavaBean或類JavaBean中使用,這個注解包含范圍最廣,它包含getter、setter、NoArgsConstructor注解,即當使用當前注解時,會自動生成包含的所有方法;
@getter注解:
在JavaBean或類JavaBean中使用,使用此注解會生成對應的getter方法;
@setter注解:
在JavaBean或類JavaBean中使用,使用此注解會生成對應的setter方法;
@NoArgsConstructor注解:
在JavaBean或類JavaBean中使用,使用此注解會生成對應的無參構造方法;
@AllArgsConstructor注解:
在JavaBean或類JavaBean中使用,使用此注解會生成對應的有參構造方法;
@ToString注解:
在JavaBean或類JavaBean中使用,使用此注解會自動重寫對應的toStirng方法;
@EqualsAndHashCode注解:
在JavaBean或類JavaBean中使用,使用此注解會自動重寫對應的equals方法和hashCode方法;
@Slf4j:
在需要打印日志的類中使用,當項目中使用了slf4j打印日志框架時使用該注解,會簡化日志的打印流程,只需調用info方法即可;
@Log4j:
在需要打印日志的類中使用,當項目中使用了log4j打印日志框架時使用該注解,會簡化日志的打印流程,只需調用info方法即可;
在使用以上注解需要處理參數時,處理方法如下
(以@ToString注解為例,其他注解同@ToString注解):
@ToString(exclude="column")
意義:排除column列所對應的元素,即在生成toString方法時不包含column參數;
@ToString(exclude={"column1","column2"})
意義:排除多個column列所對應的元素,其中間用英文狀態下的逗號進行分割,即在生成toString方法時不包含多個column參數;
@ToString(of="column")
意義:只生成包含column列所對應的元素的參數的toString方法,即在生成toString方法時只包含column參數;
@ToString(of={"column1","column2"})
意義:只生成包含多個column列所對應的元素的參數的toString方法,其中間用英文狀態下的逗號進行分割,即在生成toString方法時只包含多個column參數;
5、示例代碼(僅簡單舉一個使用例子)
不使用Lombok(傳統方法)
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;@Overridepublic 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;}
只給單個參數添加
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;}
?
---------------------
作者:Hern(宋兆恒)
來源:CSDN
原文:https://hernsong.blog.csdn.net/article/details/86546970
版權聲明:本文為作者原創文章,轉載請附上博文鏈接!
內容解析By:CSDN,CNBLOG博客文章一鍵轉載插件