
1.介紹
lombok是開源的代碼生成庫,是一款非常實(shí)用的小工具,我們在編輯實(shí)體類時可以通過lombok注解減少getter、setter等方法的編寫,在更改實(shí)體類時只需要修改屬性即可,減少了很多重復(fù)代碼的編寫工作。本文將介紹IntelliJ IDEA中l(wèi)ombok插件的安裝和配置以及簡單的使用方法。
2.安裝
在Idea的插件商店中搜索“l(fā)ombok”安裝即可,安裝完畢后需重啟Idea。

3.配置
然后在Settings設(shè)置頁面,我們點(diǎn)擊Build,Execution,Deployment-->選擇Compiler-->選中Annotation Processors,然后在右側(cè)勾選Enable annotation processing即可。

4.使用
使用前需要說明的是安裝的插件只是一個調(diào)用,就像使用maven插件一樣,本機(jī)需要安裝maven才行。我們在使用lombok前也需要添加lombok的依賴。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
接下來編輯一個實(shí)體類TbMsg,添加三個屬性,最后在類上添加@Data屬性,這個注解可以幫我們在.class文件中生成類中所有屬性的get/set方法、equals、canEqual、hashCode、toString方法等。
package com.zhuliming.entity;
import lombok.Data;
/**
* 實(shí)體類
*/
@Data
public class TbMsg {
private int id;
private String name;
private String msg;
}
創(chuàng)建一個對象,通過對象我們可以看到已經(jīng)生成的方法

也可以通過在菜單欄點(diǎn)擊View-->Tool Windows-->Structure,便可以看到類中所有的方法了,這些都是lombok幫我們自動生成的。

5.常用的lombok注解
常用的 lombok 注解:
@Data :注解在類上;包含了@ToString,@EqualsAndHashCode,@Getter / @Setter和@RequiredArgsConstructor的功能,提供類所有屬性的 getter 和 setter 方法,此外還提供了equals、canEqual、hashCode、toString 方法
@Setter:注解在屬性上;為屬性提供 setter 方法
@Getter:注解在屬性上;為屬性提供 getter 方法
@ToString:注解在類上;生成toString()方法,默認(rèn)情況下,它會按順序(以逗號分隔)打印你的類名稱以及每個字段??梢赃@樣設(shè)置不包含哪些字段@ToString(exclude = "id") / @ToString(exclude = {"id","name"})
如果繼承的有父類的話,可以設(shè)置callSuper 讓其調(diào)用父類的toString()方法,例如:@ToString(callSuper = true)
@EqualsAndHashCode:注解在類上;生成hashCode()和equals()方法,默認(rèn)情況下,它將使用所有非靜態(tài),非transient字段。但可以通過在可選的exclude參數(shù)中來排除更多字段?;蛘?,通過在parameter參數(shù)中命名它們來準(zhǔn)確指定希望使用哪些字段。
@NonNull: 注解在屬性上;標(biāo)識屬性是不能為空,為空則拋出異常。
@Slf4j :注解在類上;根據(jù)用戶實(shí)際使用的日志框架生成log日志對象。
@Log4j :注解在類上;為類提供一個 屬性名為log 的 log4j 日志對象
@NoArgsConstructor:注解在類上;為類提供一個無參的構(gòu)造方法。當(dāng)類中有final字段沒有被初始化時,編譯器會報錯,此時可用@NoArgsConstructor(force = true),然后就會為沒有初始化的final字段設(shè)置默認(rèn)值 0 / false / null。對于具有約束的字段(例如@NonNull字段),不會生成檢查或分配,因此請注意,正確初始化這些字段之前,這些約束無效。
@AllArgsConstructor:注解在類上;為類提供一個全參的構(gòu)造方法
默認(rèn)生成的方法是public的,如果要修改方法修飾符可以設(shè)置AccessLevel的值,例如:@Getter(access = AccessLevel.PROTECTED)
@RequiredArgsConstructor:注解在類上;會生成構(gòu)造方法(可能帶參數(shù)也可能不帶參數(shù)),如果帶參數(shù),這參數(shù)只能是以final修飾的未經(jīng)初始化的字段,或者是以@NonNull注解的未經(jīng)初始化的字段@RequiredArgsConstructor(staticName = "of")會生成一個of()的靜態(tài)方法,并把構(gòu)造方法設(shè)置為私有的。