一、介紹和使用
Lombok 是一個 java 庫,能以簡單的注解形式來簡化 java 代碼,提高開發人員的開發效率。
常見使用在開發過程中需要寫的 javabean,往往開發需要花時間去添加相應的 getter/setter,也許還要去寫構造器、equals等方法,而且需要維護,當屬性多時會出現大量的 getter/setter 方法,這些顯得很冗長也沒有太多技術含量,一旦修改屬性,就容易出現忘記修改對應方法的失誤,而這些都可以通過 Lombok 的注解去完成,而且!Lombok 的功能還不僅僅是這些。
1、pom.xml
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
<scope>provided</scope>
</dependency>
2、插件安裝
推薦安裝 IDEA lombok plugin 插件,非必須,但是開發過程中看着一堆紅色報錯,還是略不爽呀~

二、注解說明
這裡羅列一些常用的 Lombok 注解:
@Getter:自動生成所有屬性的 getter 方法。
@Setter:自動生成所有屬性的 setter 方法。
@ToString:自動生成 toString() 方法。
@EqualsAndHashCode:生成 equal() 和 hashCode() 方法。
@NoArgsConstructor:生成一個無參構造器。
@AllArgsConstructor:生成一個全參構造器。
@NonNull:為字段參數生成非空檢查,避免 NullPointerException;
@RequiredArgsConstructor:為所有必填字段生成一個構造器。
@Cleanup:用在局部變量上,作為資源使用完成後的釋放。比如 FileInputStream 這類的檔案流,會在使用完成後調用 close() 方法。
@SneakyThrows:用在方法或者構造器上,抛出需要 throw 的異常。比如 @SneakyThrows(UnsupportedEncodingException.class)。
@Synchronized:用在方法上。相當于對方法使用了 synchronized 關鍵字。
@Data:神器,相當于同時使用了 @Getter、@Setter、@RequiredArgsConstructor、@ToString、@EqualsAndHashCode。
@Slf4j:用在類上,相當于寫了 private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
完整的注解文檔說明:https://projectlombok.org/features/all
@Data
@NoArgsConstructor
@AllArgsConstructor
@Slf4j
public class UserVO {
private Long id;
@NonNull
private String name;
@NonNull
private String password;
public void copyFile(String in, String out) throws IOException {
@Cleanup
FileInputStream inStream = new FileInputStream(in);
@Cleanup
FileOutputStream outStream = new FileOutputStream(out);
byte[] b = new byte[65536];
while (true) {
int r = inStream.read(b);
if (r == -1) break;
outStream.write(b, 0, r);
}
}
@SneakyThrows(UnsupportedEncodingException.class)
public String utf8ToString(byte[] bytes) {
return new String(bytes, "UTF-8");
}
}