Lombok - 使用註解讓你的JavaBean變得更加簡潔

柒索發表於2020-08-14

Lombok - 工具簡介:

Lombok是一個編譯時註釋前處理器,有助於在編譯時注入一些程式碼。Lombok提供了一組在開發時處理的註釋,以將程式碼注入到Java應用程式中,注入的程式碼在開發環境中立即可用。在詳細介紹之前,可以去其官網看一下作者提供的視訊,視訊中闡述了Lombok 的簡單用法。https://projectlombok.org/

Lombok - 安裝過程:

基於 Maven:

示例程式碼:

<dependencies>
	<dependency>
		<groupId>org.projectlombok</groupId>
		<artifactId>lombok</artifactId>
		<version>1.16.18</version>
		<scope>provided</scope>
	</dependency>
</dependencies>

新增好 Maven 依賴之後,就可以在程式碼中使用 Lombok 的註解來簡化程式碼了。

基於IntelliJ IDEA:

安裝 Lombok IntelliJ plugin:

Jetbrains IntelliJ IDEA Editor完全相容 Lombok,要在 IDEA 中使用 Lombok,那就需要在IntelliJ IDEA 中安裝 Lombok IntelliJ plugin 外掛,以下為安裝步驟:

  • Go to File > Settings > Plugins

  • Click on Browse repositories...

  • Search for Lombok Plugin

  • Click on Install plugin

  • Restart IntelliJ IDEA

具體安裝過程可參考官網或者外掛 Github 主頁。

在IntelliJ IDEA使用Lombok:

  • Go to Refactor > Lombok
  • 在開啟的 JavaBean 檔案中按照需求新增相應的註解即可。

Lombok - 常用註解:

你如果是使用IDEA的話,在當前檔案上按command+F12,或者長按command在左側找到Structure,就能夠看到 lombok 為當前類生成的方法。

  • @Data :註解在類上;提供類所有屬性的 getting 和 setting 方法,此外還提供了equals、canEqual、hashCode、toString 方法

    示例程式碼:

    import lombok.Data;
    
    @Data
    public class Person {
        private String firstName;
        private String lastName;
        private String job;
    }
    
  • @Setter/@Getter:註解在屬性或類上;為屬性提供 Setter/Getter 方法

    示例程式碼:

    import lombok.Getter;
    import lombok.Setter;
    
    // 只為 firstName 生成Getter、Setter 方法
    public class Person {
        @Getter
        @Setter
        private String firstName;
        private String lastName;
        private String job;
    }
    
    import lombok.Getter;
    import lombok.Setter;
    
    @Getter
    @Setter
    public class Person {
    // 為所有欄位生成Getter、Setter 方法
        
        private String firstName;
        private String lastName;
        private String job;
    }
    
    
  • @Log4j :註解在類上;為類提供一個 屬性名為log 的 log4j 日誌物件

  • @Value:此註解集@equals()、@hashCode()、@toString()、@Getter()於一身。

    示例程式碼:

    import lombok.Value;
    import lombok.experimental.NonFinal;
    
    @Value
    public class Person {
        /** 類本身以及類中所有的欄位都是private final型別的,不會生成Setter方法。
         *  可以通過顯式指定某個註解覆蓋掉預設的屬性。
         *  通過@NonFinal註解修飾的欄位,不是final型別的。
         */
        String firstName;
    
        String lastName;
        @NonFinal
        String job;
    }
    
    
  • @NoArgsConstructor/@AllArgsConstructor: 自動生成無引數建構函式/全參建構函式。

    示例程式碼:

    import lombok.AllArgsConstructor;
    import lombok.NoArgsConstructor;
    
    @NoArgsConstructor
    @AllArgsConstructor
    public class Person {
        private String firstName;
    
        private String lastName;
    
        private String job;
    }
    
  • @NonNull :修飾方法、建構函式的引數或者類欄位,Lombok自動生成一個非空檢測語句。

    示例程式碼:

    import lombok.NonNull;
    
    public class Person{
        public String Example(@NonNull String sum){
    
            return  null;
        }
    }
    
  • @Synchronized 將方法變成同步方法

  • @SneakyThrows:將受檢異常轉換為非受檢異常,避免丟擲或嘗試語句。

lombok 專案官網上還有一些其他註解的用法,此處就不列舉了,附連結:https://projectlombok.org/features/all

參考資料:

相關文章