1.Lombok的使用
|
|-加依賴 |--<dependency><groupId>org.projectlombok</groupId>
| | <artifactId>lombok</artifactId>
| | <version>1.16.18</version><scope>provided</scope></dependency>
|
|-IDE安裝插件
|
|-加註解 |--@Getter(value = AccessLevel.PUBLIC) : value可省略可修改
| |--@Setter(value = AccessLevel.PUBLIC)
| |--@ToString : 可以通過of屬性限定顯示某些字段,通過exclude屬性排除某些字段
| |--@EqualsAndHashCode
| |--@NonNull :主要作用於成員變量和參數中,標識不能爲空,否則空指針 ;如 @NonNull privare String name;
| |
| |--@NoArgsConstructor | 有staticName、access等屬性
| |--@RequiredArgsConstructor | staticName屬性一旦設定,將採用靜態方法的方式生成實例
| |--@AllArgsConstructor | access屬性可以限定訪問權限
| |
| |--@Data :相當於 @ToString @EqualsAndHashCode @Getter @Setter @RequiredArgsConstructor
| |--@Builder :作用於類上,將類轉變爲建造者模式
| |
| |--@Log | 作用於類上,生成日誌變量。針對不同的日誌實現產品,有不同的註解:
| | | @CommonsLog @JBossLog @Log @Log4j @Log4j2 @Slf4j @XSlf4j
| |
| |--@Cleanup:自動關閉資源,針對實現了java.io.Closeable接口的對象有效,如:典型的IO流對象。
| |--@SneakyThrows:可以對受檢異常進行捕捉並拋出
| |--@Synchronized:作用於方法級別,可以替換synchronize關鍵字或lock鎖,用處不大
2.安裝插件
IDEA中配置Lombok
|
|-- 點擊File-- Settings設置界面,安裝Lombok插件。
|-- 點擊File-- Settings設置界面,開啓 Annotation Processors(默認開啓)-讓Lombok註解在編譯階段起到作用
Eclipse中配置Lombok
|
|-- 下載 lombok.jar :https://projectlombok.org/download.html
|-- 引入 lombok.jar : 放在eclipse安裝目錄下(和eclipse.ini 文件平級)
|-- 在eclipse.ini配置文件中添加如下兩項內容 |
| | |---" -Xbootclasspath/a:[lombok.jar所在路徑] "
| | |---" -javaagent:[lombok.jar所在路徑] "
| |例如
| |----|---- " -Xbootclasspath/a:D:\eclipse\eclipse\lombok.jar "
| | |---- " -javaagent:D:\eclipse\eclipse\lombok.jar "
3.Lombok實現原理
|
|--javac對源代碼進行分析,生成一棵抽象語法樹(AST)
|
|--javac編譯過程中調用實現了JSR 269的Lombok程序
|
|--此時Lombok就對第一步驟得到的AST進行處理 |---找到Lombok註解所在類對應的語法樹(AST),
| |---然後修改該語法樹(AST),
| |---增加Lombok註解定義的相應樹節點
|
|--javac使用修改後的抽象語法樹(AST)生成字節碼文件
自從Java 6起,javac就支持"JSR 269 Pluggable Annotation Processing API"規範,
只要程序實現了該API,就能在javac運行的時候得到調用。