springboot的lombok
阿新 • • 發佈:2019-01-22
name 比較 構建 study sync upload throw vat 功能
@CleanUp : 自動資源管理:不用再在finally中添加資源的close方法
@Setter/@Getter : 自動生成set和get方法
@ToString : 自動生成toString方法
@EqualsAndHashcode : 從對象的字段中生成hashCode和equals的實現
@NoArgsConstructor/@RequiredArgsConstructor/@AllArgsConstructor
自動生成構造方法
@Data : 自動生成set/get方法,toString方法,equals方法,hashCode方法,不帶參數的構造方法
@Value : 用於註解final類
@Builder : 產生復雜的構建器api類
@SneakyThrows : 異常處理(謹慎使用)
@Synchronized : 同步方法安全的轉化
@Getter(lazy=true) :
@Log : 支持各種logger對象,使用時用對應的註解,如:@Log4j
lombok概述
- lombok簡介
Lombok想要解決了的是在我們實體Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不會用到,但是某些時候仍然需要復寫,以期方便使用的方法;在使用Lombok之後,將由其來自動幫你實現代碼生成,註意,其是 在運行過程中,幫你自動生成的 。就是說,將極大減少你的代碼總量。 -
lombok作用
消除模板代碼
getter、setter、構造器、toString()、equals()
便捷的生成比較復雜的代碼,例如一個POJO要轉化成構建器模式的形式,只需要一個註解。SpringBoot中使用lombok
- 添加依賴
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.10</version> </dependency>
- 編寫一個實體類 User,使用@Data註解
@Data public class User { private String name; private int age; }
- 編寫測試方法,測試@Data的作用
@Test public void testUser(){ User user = new User(); user.setName("AnyCode"); user.setAge(20); System.err.println(user.toString()); }
lombok的註解介紹
@NonNull : 讓你不在擔憂並且愛上NullPointerException
@CleanUp : 自動資源管理:不用再在finally中添加資源的close方法
@Setter/@Getter : 自動生成set和get方法
@ToString : 自動生成toString方法
@EqualsAndHashcode : 從對象的字段中生成hashCode和equals的實現
@NoArgsConstructor/@RequiredArgsConstructor/@AllArgsConstructor
自動生成構造方法
@Data : 自動生成set/get方法,toString方法,equals方法,hashCode方法,不帶參數的構造方法
@Value : 用於註解final類
@Builder : 產生復雜的構建器api類
@SneakyThrows : 異常處理(謹慎使用)
@Synchronized : 同步方法安全的轉化
@Getter(lazy=true) :
@Log : 支持各種logger對象,使用時用對應的註解,如:@Log4j
推薦使用技巧
- 在 Bean / Entity 類上使用 @Data 註解。
- 需要使用 Log 對象的地方使用 @Log4j(依項目日誌框架決定)。
-
註意:lombok 的註解不能被繼承。
IDEA中使用lombok
如果想讓lombok生效我們還需要針對idea工具進行插件的安裝,下面我們按照順序打開Idea配置
File > Settings > Plugins > Browse repositories... > 輸入lombok,插件就會被自動檢索出來,如下圖所示:
我的工具已經安裝了該插件,所有在右側是沒有任何按鈕的,如果你的工具沒有安裝該插件,
右側會有一個綠色的按鈕,按鈕的內容則是Install,點擊安裝後重啟Idea就可以了。lombok常用註解詳解
- @EqualsAndHashCode,@ToString :告訴Lombok來生成 equals, hashCode方法,toString方法
在生成這些方法的時候lombok會使用所有的成員變量。 - ** @AllArgsConstructor** :會自動創建一個包括所有成員的構造器。
- @Getter/@Setter: 註解會為每一個標記的成員變量自動生成對應的方法。
- 用例
package com.jxlg.lance.springbootcorestudy.lombok; import lombok.*; /** * @author lance(ZYH) * @function 測試其他註解 * @date 2018-03-22 12:27 */ @EqualsAndHashCode @ToString @AllArgsConstructor public class Student { @Setter @Getter private String stuName; @Setter @Getter private Integer stuAge; @Setter @Getter private String stuClass; @Setter @Getter private Integer stuNumber; }
- 如果你不想將註解用在全部的成員變量上,而是僅僅部分變量上,那麽你可以提供一個指定的哪一個成員變量需要
自動生成方法的變量。舉例: 比如在這裏,我們只想讓stuName,stuAge兩個成員變量出現在 toString 方法裏。
@EqualsAndHashCode @ToString(of = {"stuName","stuAge"}) @AllArgsConstructor public class Student { @Setter @Getter private String stuName; @Setter @Getter private Integer stuAge; @Setter @Getter private String stuClass; @Setter @Getter private Integer stuNumber; }
- 這些代碼已經比我們一開始要好太多了,但是它任然不夠簡潔。這裏重復了大量的 @Getter 和 @Setter 註解。
如果你只是需要在Class中僅暴露幾個字段,那麽使用它們非常方便,但如果您需要為所有字段生成訪問器,則會變得煩人又無聊。
為了使代碼更加簡潔, Lombok永續我們在類級上使用這些註解。如果這些註解放在類名之上,
那麽lombok會自動為我們生成所有字段的訪問方法。
@EqualsAndHashCode @ToString @AllArgsConstructor @Setter @Getter public class Student { private String stuName; private Integer stuAge; private String stuClass; private Integer stuNumber; }
- @Buidler :實例化這個類
- 用例
@EqualsAndHashCode @ToString @AllArgsConstructor @Setter @Getter @Builder public class Student { private String stuName; private Integer stuAge; private String stuClass; private Integer stuNumber; }
測試類:
package com.jxlg.lance.springbootcorestudy.lombok; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import static org.junit.Assert.*; @RunWith(JUnit4.class) public class StudentTest { @Test public void test(){ Student student = Student.builder() .stuName("張三") .stuAge(12) .stuClass("高三") .stuNumber(12222) .build(); System.out.println(student); } }
結果:
Student(stuName=張三, stuAge=12, stuClass=高三, stuNumber=12222)
- @Data :簡單的來說所有所有的註解我們都可以使用一個註解完成.也就是@Data
我們在定義類的時候 只需要加一個 @Data 註解,其他的註解我們都不需要在添加就可以達到前面所說的所有功能。 - 通過上面介紹的,我們平常使用Lombok只需要這樣就是就可以了,如下:
@Data @Builder public class User { private String name; private Integer age; }
springboot的lombok