打開perferences或者settings,找打plugins,選擇Browse repositories...,搜索lombok,下載安裝重啓便可。java
2.一、@Getter and @Setter:api
能夠做用在類上和屬性上;放在類上,會對全部的非靜態(non-static)屬性生成Getter/Setter方法;放在屬性上,會對該屬性生成Getter/Setter方法。默認生成的方法是public的,若是要修改方法修飾符能夠設置AccessLevel的值,例如:@Getter(access = AccessLevel.PROTECTED)ide
2.二、@FieldNameConstants
2.三、@ToStringui
2.四、@EqualsAndHashCodespa
默認狀況下,會使用全部非瞬態(non-transient)和非靜態(non-static)字段來生成equals和hascode方法,能夠經過在可選的exclude參數中來排除更多字段。或者,經過在parameter參數中命名它們來準確指定但願使用哪些字段。
2.五、@AllArgsConstructor, @RequiredArgsConstructor and @NoArgsConstructor插件
無參構造器、部分參數構造器、全參構造器,當咱們須要重載多個構造器的時候,Lombok就無能爲力了。日誌
2.六、@Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j, @CommonsLog, @JBossLog, @Floggercode
註解在類上;爲類提供一個 屬性名爲log 的 log4j 日誌對象
2.七、@Data【經常使用】對象
@ToString, @EqualsAndHashCode, 全部屬性的@Getter, 全部non-final屬性的@Setter和@RequiredArgsConstructor的組合,
一般狀況下,咱們使用這個註解就足夠了。blog
2.八、其餘
@Builder:爲你的類生成複雜的構建器API。
@Singular
@Delegate:至關的牛逼,它會該類生成一些列的方法,這些方法都來自與List接口
@Value
@Accessors
主要用於控制生成的getter和setter
主要參數介紹
@Wither:提供了給final字段賦值的一種方法
@Cleanup:關閉流
@Synchronized:給方法加上同步鎖,對象同步
@SneakyThrows:拋出異常
from Intellij 14.1 @val
from Intellij 15.0.2 @var
from Intellij 14.1 @var
from Intellij 2016.2 @UtilityClass
Lombok config system
Code inspections
Refactoring actions (lombok and delombok)
在perferences或Settings設置頁面,點擊【Build,Execution,Deployment】-->選擇Compiler-->選中Annotation Processors,而後在右側勾選Enable annotation processing便可。
注意。每一個項目都需設置此項,若是不配置此項lombok註解不會生效。
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.18</version> <scope>provided</scope> </dependency>
主要使用步驟2中註解
1.運行時解析
運行時可以解析的註解,必須將@Retention設置爲RUNTIME,這樣能夠經過反射拿到該註解。java.lang.reflect反射包中提供了一個接口AnnotatedElement,
該接口定義了獲取註解信息的幾個方法,Class、Constructor、Field、Method、Package等都實現了該接口,大部分開發者應該都很熟悉這種解析方式。
2.編譯時解析
2.一、Annotation Processing Tool
apt自JDK5產生,JDK7已標記爲過時,不推薦使用,JDK8中已完全刪除,自JDK6開始,可使用Pluggable Annotation Processing API來替換它,
apt被替換主要有2點緣由:
api都在com.sun.mirror非標準包下
沒有集成到javac中,須要額外運行
apt的更多介紹能夠參見這裏。
2.二、Pluggable Annotation Processing API
JSR 269,自JDK6加入,做爲apt的替代方案,它解決了apt的兩個問題,javac在執行的時候會調用實現了該API的程序,這樣咱們就能夠對編譯器作一些加強,
這時javac執行的過程以下: 這裏寫圖片描述
Lombok就是使用這種方式實現的,有興趣的話能夠去看看其Lombok源碼,對應註解的實現都在HandleXXX中,
好比@Getter註解的實現是HandleGetter.handle()。
還有一些其它類庫使用這種方式實現,好比Google Auto、Dagger等等。
缺點:沒法支持多種參數構造器的重載