1.Lombok作用
通過使用Lombok提供的注解逗爹,可以讓java變得簡潔、快速嚎于、易于維護掘而。
2.Lombok工作原理分析
自從Java 6起,javac就支持“JSR 269 Pluggable Annotation Processing API”規(guī)范于购,只要程序實現了該API袍睡,就能在javac運行的時候得到調用。
1)javac對源代碼進行分析肋僧,生成一棵抽象語法樹(AST)斑胜;
2)運行過程中調用實現了“JSR 269 API”的Lombok程序;
3)Lombok就對第一步驟得到的AST進行處理嫌吠,找到相應注解所在類對應的語法樹(AST)止潘,然后修改該語法樹(AST),增加相應方法定義的相應樹節(jié)點辫诅;
4)javac使用修改后的抽象語法樹(AST)生成字節(jié)碼文件覆山,即給class增加新的節(jié)點(代碼塊);
3.Lombok使用方法
3.1jar包引入泥栖,添加maven依賴,并下載安裝lombok插件
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<scope>provided</scope>
</dependency>
3.2常用注解
3.2.1@Data
注解在類勋篓,生成setter/gette吧享、equals、canEqual譬嚣、hashCode钢颂、toString方法,如為final屬性拜银,則不會為該屬性生成setter方法殊鞭,等效于{@code @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode}。
3.2.2@Getter
注解在類或字段尼桶,注解在類時為所有字段生成getter方法操灿,注解在字段上時只為該字段生成getter方法。
3.2.3@Setter
注解在類或字段泵督,注解在類時為所有字段生成setter方法趾盐,注解在字段上時只為該字段生成setter方法。
**3.2.4@RequiredArgsConstructor **
注解在類,為類中需要特殊處理的字段生成構造方法救鲤,比如final和被@NonNull注解的字段久窟。
3.2.5@EqualsAndHashCode
注解在類,生成hashCode和equals方法本缠。
3.2.6@NoArgsConstructor
注解在類斥扛,生成無參的構造方法。
3.2.7@AllArgsConstructor
注解在類丹锹,生成包含類中所有字段的構造方法稀颁。
3.2.8@ToString
注解在類,添加toString方法卷仑。
3.2.9@Slf4j
注解在類峻村,生成log變量,嚴格意義來說是常量锡凝。private static final Logger log = LoggerFactory.getLogger(UserController.class);
3.2.10@NonNull
該注解用在屬性或構造器上粘昨,Lombok會生成一個非空的聲明,可用于校驗參數窜锯,能幫助避免空指針张肾。
3.2.11@Cleanup
該注解能幫助我們自動調用close()方法,很大的簡化了代碼锚扎。