一、lombok概述
Lombok想要解決了的是在我們實體Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不會用到,但是某些時候仍然需要復寫,以期方便使用的方法;在使用Lombok之后,將由其來自動幫你實現代碼生成,注意,其是 在運行過程中,幫你自動生成的 。就是說,將極大減少你的代碼總量。
作用:
- 為Java POJO生成屬性對應的getter,setter等
- 為Java POJO生成builder構造器模式的實現
- 為Java類自動添加其他重復性代碼,比如日志記錄的聲明代碼可以通過@Slf4j注解添加
二、使用過lombok
1. 添加依賴
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.10</version> </dependency>
2. Idea安裝lombok插件
如果想讓lombok生效我們還需要針對idea工具進行插件的安裝。
3. 編寫一個實體類 User,使用@Data注解
@Data
public class User {
private String name;
private int age;
}
注意:lombok 的注解不能被繼承。
4. 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) :懶加載。如果Bean的一個字段的初始化是代價比較高的操作,比如加載大量的數據;同時這個字段並不是必定使用的。那么使用懶加載機制,可以保證節省資源。懶加載機制,是對象初始化時,該字段並不會真正的初始化;而是第一次訪問該字段時才進行初始化字段的操作。
- @Log : 支持各種logger對象,使用時用對應的注解,如:@Log4j
5. 常用注解
(1) @EqualsAndHashCode,@ToString
告訴Lombok來生成 equals, hashCode方法,toString方法在生成這些方法的時候lombok會使用所有的成員變量。
(2) @AllArgsConstructor
會自動創建一個包括所有成員的構造器。
(3) @Getter/@Setter
注解會為每一個標記的成員變量自動生成對應的方法。
(4) @Buidler
實例化這個類。
@EqualsAndHashCode @ToString @AllArgsConstructor @Setter @Getter @Builder public class Student { private String stuName; private Integer stuAge; private String stuClass; private Integer stuNumber; }
可以這樣實例化:
Student student = Student.builder() .stuName("張三") .stuAge(12) .stuClass("高三") .stuNumber(12222) .build(); System.out.println(student);
(5) @Data
簡單的來說所有所有的注解我們都可以使用一個注解完成,也就是@Data。
我們在定義類的時候 只需要加一個 @Data 注解,其他的注解我們都不需要在添加就可以達到前面所說的所有功能。