SpringBoot整合lombok省略set和get方法


一、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 注解,其他的注解我們都不需要在添加就可以達到前面所說的所有功能。

 

參考:https://www.cnblogs.com/zhangyinhua/p/8623018.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM