以下是文章大綱: 作者:白色蝸牛 公眾號:蝸?;ヂ?lián)網(wǎng)
Lombok 是什么?官網(wǎng):https:/// Lombok 是一個 Java 庫,,使用 Lombok 可以通過簡單的注解幫助我們消除 Java 的樣板代碼,,使代碼更加簡潔清晰。 比如對于簡單的 Java 對象(POJO),,很多的代碼里充斥著大量的 getter() 和 setter() 方法,樣板代碼占用比例高,,影響可讀性,,引入 Lombok 只需一個注解就能達到相同效果,而且更簡潔,。 Lombok 引入1,、POM 中引入依賴使用 Lombok 注解需要依賴它的庫。 Maven 庫:https:///artifact/org.projectlombok/lombok <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.16</version> </dependency>
系統(tǒng)中如果有引入無需重復引入,。 2,、IDE 中安裝插件為什么裝插件? - 因為 Lombok 的引入后,,java 文件使用 javac 編譯成的字節(jié)碼文件中就會包含 getter 和 setter 函數(shù),,但是源代碼中找不到定義,IDE 會認為這是錯誤,,因此需要安裝一個 Lombok 的插件,,方便本地 IDE 的研發(fā)工作。
IDEA 中安裝: Settings->Plugins->輸入框輸入”lombok”
Lombok 使用比如要針對以下 Java 對象提供 getter() 和 setter() 方法: public class Mountain {
private String name;
private String country; }
只需要在類上打 @Getter 和 @Setter 注解,。 @Getter @Setter public class Mountain {
private String name;
private String country; }
然后用 maven 編譯一下:mvn clean compile ,。 使用的時候就可以正常拿到像 getCountry() 和 setCountry() 這樣的方法。通過 IDE 找方法調(diào)用處也可以直接鎖定到字段上,,以前要點兩下才能看到字段明細信息,,使用 Lombok 點一下就能達到效果。 Lombok 使用注意- 不建議直接使用
@Data 這種大而全的方式覆蓋太多的簡化場景,。 - toString 場景不建議使用 Lombok 的,,建議使用系統(tǒng)自定義 ToString 里的方法。
- 對外包考慮到接入方也需要引入依賴,,如果擔心副作用,,可以不引入。
Lombok 原理自 JDK6 之后,,javac 在執(zhí)行的時候會調(diào)用實現(xiàn)了 JSR 269 API 的程序,這樣我們就可以對編譯器做一些增強,,這時 javac 執(zhí)行的過程如下: Lombok 本質(zhì)上就是一個實現(xiàn)了“JSR 269 API”的程序,。在使用 javac 的過程中,,它產(chǎn)生作用的具體流程如下: javac 對源代碼進行分析,生成一棵抽象語法樹(AST)- 運行過程中調(diào)用實現(xiàn)了“
JSR 269 API ”的 Lombok 程序 - Lombok 對第一步驟得到的 AST 進行處理,,找到
@Getter @Setter 注解所在類對應(yīng)的語法樹(AST) - Lombok 修改該語法樹(AST),,增加
getter() 和 setter() 方法定義的相應(yīng)樹節(jié)點 - javac 使用修改后的抽象語法樹(AST)生成字節(jié)碼文件,即給 class 增加新的節(jié)點(代碼塊)
|