導入架包或Maven添加依賴:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
</dependency>
註解:
@NoArgsConstructor 創建無參構造器(如果類中含有final修飾的成員變量則無法使用)
@RequiredArgsConstructor 以類中所有帶有@NonNull註解的或者帶有final修飾的成員變量生成對應的構造方法
@AllArgsConstructor 全參構造器(不會把父類的屬性加到構造器中)
@Cleanup 默認是調用資源的close()方法
@Data 效果等同於@Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor (不包括@NoArgsConstructor和@AllArgsConstructor)
@Value 和@Data類似,區別在於它會把所有成員變量默認定義爲private final修飾,並且不會生成set方法
@ToString toString()
@EqualsAndHashCode equals和hashcode、canEqual方法
@Getter/@Setter 用在成員變量上爲成員變量生成對應的get和set方法,用在類上面爲此類裏的所有非靜態成員變量生成對應的get和set方法(如果是final變量,那就只會有get方法)
@NonNull 用在成員方法或者構造方法的參數前面,會自動產生一個關於此參數的非空檢查,如果參數爲空,則拋出一個空指針異常
@Log4j 用在類上相當於private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(類名.class);
Lombok這款插件依靠可插件化的Java自定義註解處理API(JSR 269: Pluggable Annotation Processing API)來實現在Javac編譯階段利用“Annotation Processor”對自定義的註解進行預處理後生成真正在JVM上面執行的“Class文件”
在Javac 解析成AST抽象語法樹之後, Lombok 根據自己編寫的註解處理器,動態地修改 AST,增加新的節點(即Lombok自定義註解所需要生成的代碼),最終通過分析生成JVM可執行的字節碼Class文件。