eclipse安裝lombok插件解決 @Slf4j 等找不到log變量問題


一、背景:
以前的Java項目中,充斥着太多不友好的代碼,如:POJO的getter/setter/toString;異常處理;I/O流的關閉操作等,這些樣板代碼既沒有技術含量,又影響着代碼的美觀,因此Lombok應運而生。

任何技術的出現都是為了解決某一類問題,如果在此基礎上再建立奇技淫巧,不如回歸Java本身,應該保持合理使用而不濫用。


二、具體使用和安裝
1)引入相應的maven包
    <dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>

Lombok的scope=provided,說明它只在編譯階段生效,不需要打入包中。事實正是如此,Lombok在編譯期將帶Lombok注解的Java文件正確編譯為完整的Class文件。

2)前往官網下載:https://projectlombok.org/download lombok.jar
3)將lombok.jar放在eclipse的安裝目錄下。
4)cmd窗口(Windows系統)或Shell窗口(Linux 系統)執行命令:java -jar lombok.jar
5)基於4),在彈出的窗口中點擊Specify location.. 選擇eclipse 的安裝目錄。然后點擊install/update。
安裝成功,退出,在eclipse.ini中會看到新增lombok.jar一行。
6)有時可能這樣自動安裝的路徑導致eclipse無法啟動,可以將eclipse.ini文件自動追加的一行修改為如下:
-Xbootclasspath/a:lombok.jar
-javaagent:lombok.jar
7)啟動eclipse ,clean。錯誤消失。

三、關於lombok的使用簡要說明
1. @NonNull:可以幫助我們避免空指針。
import lombok.NonNull;
public class NonNullExample extends Something {
     private String name;
     public NonNullExample(@NonNull Person person) {
          super("Hello");
          this.name = person.getName();
     }
}


2. @Cleanup: 自動幫我們調用close()方法。
import lombok.Cleanup;
import java.io.*;
public class CleanupExample {
public static void main(String[] args) throws IOException {
     @Cleanup InputStream in = new FileInputStream(args[0]);
     @Cleanup OutputStream out = new FileOutputStream(args[1]);
     byte[] b = new byte[10000];
     while (true) {
              int r = in.read(b);
              if (r == -1) break;
              out.write(b, 0, r);
     }
}
}

3. @Getter / @Setter: 自動生成Getter/Setter方法
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
public class GetterSetterExample {
@Getter @Setter private int age = 10;
@Setter(AccessLevel.PROTECTED) private String name;
}

4. @NoArgsConstructor: 自動生成無參數構造函數。

5. @AllArgsConstructor: 自動生成全參數構造函數。

6. @Data: 自動為所有字段添加@ToString, @EqualsAndHashCode, @Getter方法,為非final字段添加@Setter,和@RequiredArgsConstructor!

備注:網上關於lombok的使用,爭議較多,我個人雖不是很喜歡,但有時候還是具體情況具體對待了。


免責聲明!

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



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