首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Lombok 實戰指南:消除 Java 樣板碼,提升開發效率的神器

     編輯:Java 綜合教學

什麼是 Lombok?

Lombok 是一個 Java 庫,透過編譯期註解處理器(Annotation Processor),自動生成 Getter/Setter、toString、equals/hashCode、建構子等樣板代碼,讓 POJO 類別保持精簡,專注於業務邏輯。

安裝配置(IDE 整合)

Eclipse / MyEclipse / STS

  1. 下載 lombok.jar(官網或 Maven Central)。
  2. 放置於 eclipse.ini 同目錄。
  3. 編輯 eclipse.ini,末尾新增:
-Xbootclasspath/a:lombok.jar
-javaagent:lombok.jar
  1. 重啟 IDE,執行 java -jar lombok.jar 可視覺化安裝向導。

IntelliJ IDEA

  1. Settings → Plugins → Marketplace 搜尋 "Lombok" 安裝。
  2. Settings → Build,Execution,Deployment → Compiler → Annotation Processors 勾選 Enable annotation processing。
  3. 專案 pom.xml 加入依賴:<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.x</version><scope>provided</scope></dependency>。

Maven/Gradle 專案通用依賴

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

核心註解速查表

註解作用範圍生成內容
@Data類別@Getter/@Setter/@ToString/@EqualsAndHashCode/@RequiredArgsConstructor 綜合
@Getter/@Setter類別/欄位單屬性或所有屬性的存取器
@ToString類別可自訂 includeFieldNames、exclude、callSuper
@EqualsAndHashCode類別可指定 exclude、callSuper、onlyExplicitlyIncluded
@NoArgsConstructor類別無參建構子(可 @NoArgsConstructor(force=true) 強制生成)
@AllArgsConstructor類別全參建構子
@RequiredArgsConstructor類別針對 final 或 @NonNull 欄位生成建構子
@Builder類別/方法建造者模式,支援鏈式調用
@Slf4j/@Log4j2/@Log類別自動生成 private static final Logger log = ...
@NonNull欄位/參數生成非空檢查,拋 NullPointerException
@Value類別不可變類別:final 欄位、@Getter、@AllArgsConstructor、@ToString、@EqualsAndHashCode

實戰範例

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Slf4j
public class User {
    private Long id;
    private String username;
    @NonNull private String email;
    private int age;

    public static void main(String[] args) {
        User user = User.builder()
                .id(1L)
                .username("tom")
                .email("tom@example.com")
                .age(25)
                .build();
        log.info("User: {}", user); // 自動 toString
    }
}

進階技巧與注意事項

  • @Builder + 繼承: 父類需 @Builder,子類用 @SuperBuilder (Lombok 1.18.12+)。
  • @ToString(exclude = "password")、@EqualsAndHashCode(exclude = "id") 避免敏感資料洩露或循環引用。
  • @Data 包含 @RequiredArgsConstructor,若需無參建構子必須顯式加 @NoArgsConstructor。
  • JPA 實體類慎用 @Data(equals/hashCode 可能觸發懶加載),建議手寫或用 @Getter/@Setter + @ToString(of=...)。
  • 編譯期生成,.class 檔已含代碼,反編譯可見,運行期零依賴(provided scope)。

Delombok:原始碼生成與遷移

執行 mvn lombok:delombok 將註解展開為實際 Java 代碼,輸出至 target/generated-sources/delombok,方便移除 Lombok 依賴或 Code Review。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved