對于 POJO, 我們需要為其中的每個字段生成 getter,setter 方法, 雖然能夠使用 IDE 快速為我們生成. 但如果需要修改字段名稱及字段類型, 那么就需要刪除在重新進行生成, 終究還是有一些不方便. 如果使用 lombok, 可以通過一些簡單的注解直接生成我們所需要的代碼, 能極大的提高開發體驗.
-
安裝插件
IDEA 安裝 lombok.png -
啟用插件
啟用插件. png -
在項目中使用
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.14</version> <scope>provided</scope> </dependency>
-
lombok 常用注解介紹
-
使用 @NonNull 注解修飾的字段 通過 set 方法設置時如果為 null, 將拋出 NullPointerException
-
主要用來修飾 IO 流相關類, 會在 finally 代碼塊中對該資源進行 close();
-
為字段生成 getter,setter 方法, 標記到類上表明為所有字段生成
-
生成 toString 方法, 默認打印所有非靜態字段
-
生成 equals 和 hashCode 方法
-
@NoArgsConstructor,@RequiredArgsConstructor,@AllArgsConstructor
NoArgsConstructor 無參構造函數
RequiredArgsConstructor 為未初始化的 final 字段和使用 @NonNull 標注的字段生成構造函數
AllArgsConstructor 為所有字段生成構造函數
7. @Data
> 相當于同時使用 @Getter,@Setter,@ToString,@EqualsAndHashCode,@RequiredArgsConstructor
8. @Value
> 使用后, 類將使用 final 進行修飾, 同時使用 @ToString,@EqualsAndHashCode,@AllArgsConstructor,@Getter -
創建一個靜態內部類, 使用該類可以使用鏈式調用創建對象
如 User 對象中存在 name,age 字段, User user=User.builder().name("姓名").age(20).build()
10. @SneakyThrows
> 對標注的方法進行 try catch 后拋出異常, 可在 value 輸入需要 catch 的異常數組, 默認 catch Throwable -
在標注的方法內 使用 synchronized($lock) {} 對代碼進行包裹 ,$lock 為 new Object[0]
12. @Log,@CommonsLog,@JBossLog,@Log,@Log4j,@Log4j2,@Slf4j,@XSlf4j
> 生成一個當前類的日志對象, 可以使用 topic 指定要獲取的日志名稱
-
-
自定義配置
雖然 lombok 能為我們快速生成代碼, 但是有一些生成的代碼依然無法滿足我們的需求. 此時可配置 lombok.config 來解決問題
以下列出一些常用的配置
lombok.getter.noIsPrefix=true(默認: false) #lombok 默認對 boolean 類型字段生成的 get 方法使用 is 前綴, 通過此配置則使用 get 前綴 lombok.accessors.chain=true(默認: false) #默認的 set 方法返回 void 設置為 true 返回調用對象本身 lombok.accessors.fluent=true(默認: false) #如果設置為 true. get,set 方法將不帶 get,set 前綴, 直接以字段名為方法名 lombok.log.fieldName=logger(默認: log) #設置 log 類注解返回的字段名稱
** 注 **: 在 IDEA 中,
lombok.config
文件 請放置于src\main\java
目錄下, 在src\main\resources
中將不生效 -
參考資料