1.介紹
lombok是開源的代碼生成庫蟋定,是一款非常實(shí)用的小工具,我們在編輯實(shí)體類時(shí)可以通過lombok注解減少getter草添、setter等方法的編寫驶兜,在更改實(shí)體類時(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.使用
使用前需要說明的是安裝的插件只是一個(gè)調(diào)用夜涕,就像使用maven插件一樣颤专,本機(jī)需要安裝maven才行。我們在使用lombok前也需要添加lombok的依賴钠乏。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
接下來編輯一個(gè)實(shí)體類TbMsg栖秕,添加三個(gè)屬性,最后在類上添加@Data屬性,這個(gè)注解可以幫我們在.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)建一個(gè)對象根资,通過對象我們可以看到已經(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)情況下,它會按順序(以逗號分隔)打印你的類名稱以及每個(gè)字段伺绽∪锿耍可以這樣設(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 :注解在類上匀泊;為類提供一個(gè) 屬性名為log 的 log4j 日志對象
@NoArgsConstructor:注解在類上优训;為類提供一個(gè)無參的構(gòu)造方法。當(dāng)類中有final字段沒有被初始化時(shí)各聘,編譯器會報(bào)錯(cuò)揣非,此時(shí)可用@NoArgsConstructor(force = true),然后就會為沒有初始化的final字段設(shè)置默認(rèn)值 0 / false / null躲因。對于具有約束的字段(例如@NonNull字段)早敬,不會生成檢查或分配,因此請注意大脉,正確初始化這些字段之前搞监,這些約束無效。
@AllArgsConstructor:注解在類上箱靴;為類提供一個(gè)全參的構(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")會生成一個(gè)of()的靜態(tài)方法够委,并把構(gòu)造方法設(shè)置為私有的。