前言
Lombok 是一種 Java? 實用工具,可用來幫助開發(fā)人員消除 Java 的冗長,尤其是對于簡單的 Java 對象(POJO)。它通過注解實現(xiàn)這一目的。
安裝Lombok
打開 IDEA 的 Settings 面板,并選擇 Plugins 選項,然后點擊 “Browse repositories”
在輸入框輸入”lombok”,得到搜索結(jié)果,點擊安裝,然后安裝提示重啟 IDEA,安裝成功;

引入依賴
在自己的項目里添加 lombok 的編譯支持,在 pom 文件里面添加 dependency
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
注解簡述
- @Data =
get + set + equal + canEqual + hashCode + toString - @Setter
- @Getter
- @Slf4j
注解在 類 上;為類提供一個 屬性名為 log 的日志對象,提供默認構(gòu)造方法。 - @AllArgsConstructor
注解在 類 上;為類提供一個全參的構(gòu)造方法 - @NoArgsConstructor
注解在 類 上;為類提供一個無參的構(gòu)造方法。 - @EqualsAndHashCode
注解在 類 上, 可以生成 equals、canEqual、hashCode 方法。 - @NonNull
注解在 屬性 上,會自動產(chǎn)生一個關(guān)于此參數(shù)的非空檢查,如果參數(shù)為空,則拋出一個空指針異常 - @Cleanup
這個注解用在 變量 前面,可以保證此變量代表的資源會被自動關(guān)閉 - @ToString
這個注解用在 類 上,可以生成所有參數(shù)的 toString 方法,還會生成默認的構(gòu)造方法 - @RequiredArgsConstructor
這個注解用在 類 上,使用類中所有帶有 @NonNull 注解的或者帶有 final 修飾的成員變量生成對應的構(gòu)造方法。 - @Value
這個注解用在 類 上,會生成含所有參數(shù)的構(gòu)造方法,get 方法,此外還提供了equals、hashCode、toString 方法。 - @SneakyThrows
這個注解用在 方法 上,可以將方法中的代碼用 try-catch 語句包裹起來,捕獲異常并在 catch 中用 Lombok.sneakyThrow(e) 把異常拋出,可以使用 @SneakyThrows(Exception.class) 的形式指定拋出哪種異常 - @Synchronized
這個注解用在 類方法 或者 實例方法 上,效果和 synchronized 關(guān)鍵字相同
注解詳解
@Data
注解在 類 上;提供類所有屬性的 get 和 set 方法,此外還提供了equals、canEqual、hashCode、toString 方法。

@Setter
注解在 屬性 上;為單個屬性提供 set 方法; 注解在 類 上,為該類所有的屬性提供 set 方法, 都提供默認構(gòu)造方法。


@Getter
注解在 屬性 上;為單個屬性提供 get 方法; 注解在 類 上,為該類所有的屬性提供 get 方法,都提供默認構(gòu)造方法。


@Slf4j
注解在 類 上;為類提供一個 屬性名為 log 的日志對象,提供默認構(gòu)造方法。
//類上面注解了,直接調(diào)用 log 即可:
log.info(xxxx);
@AllArgsConstructor
注解在 類 上;為類提供一個全參的構(gòu)造方法,加了這個注解后,類中不提供默認構(gòu)造方法了。

@NoArgsConstructor
注解在 類 上;為類提供一個無參的構(gòu)造方法。

@EqualsAndHashCode
注解在 類 上, 可以生成 equals、canEqual、hashCode 方法。

@NonNull
注解在 屬性 上,會自動產(chǎn)生一個關(guān)于此參數(shù)的非空檢查,如果參數(shù)為空,則拋出一個空指針異常,也會有一個默認的無參構(gòu)造方法。

@Cleanup
這個注解用在 變量 前面,可以保證此變量代表的資源會被自動關(guān)閉,默認是調(diào)用資源的 close() 方法,如果該資源有其它關(guān)閉方法,可使用 @Cleanup(“methodName”) 來指定要調(diào)用的方法,也會生成默認的構(gòu)造方法

@ToString
這個注解用在 類 上,可以生成所有參數(shù)的 toString 方法,還會生成默認的構(gòu)造方法。

@RequiredArgsConstructor
它們都有三個參數(shù)可以設置
1、String staticName() default "";
如果設置了它,將原來的構(gòu)造方法的訪問修飾符將會變成 私有的,而外添加一個靜態(tài)構(gòu)造方法,參數(shù)相同,名字是設置的字符串的名字,訪問修飾符為公有的。
2、AnyAnnotation[] onConstructor() default {};
在構(gòu)造方法上添加注解。使用方法@RequiredArgsConstructor(onConstructor=@__({@AnnotationsGoHere}))}
例如我們在 Spring 項目中需要注入多個值,寫很多個 @Autowired 很麻煩,就可以使用這種方式:
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class UserServiceImpl implements IUserService {
private final IUserRepository userRepository;
private final IOrderRepository orderRepository;
………………
3、AccessLevel access() default lombok.AccessLevel.PUBLIC;
構(gòu)造函數(shù)訪問修飾符;
@Value
這個注解用在 類 上,會生成含所有參數(shù)的構(gòu)造方法,get 方法,此外還提供了equals、hashCode、toString 方法。

@SneakyThrows
這個注解用在 方法 上,可以將方法中的代碼用 try-catch 語句包裹起來,捕獲異常并在 catch 中用 Lombok.sneakyThrow(e) 把異常拋出,可以使用 @SneakyThrows(Exception.class) 的形式指定拋出哪種異常,也會生成默認的構(gòu)造方法。

@Synchronized
這個注解用在 類方法 或者 實例方法 上,效果和 synchronized 關(guān)鍵字相同,區(qū)別在于鎖對象不同,對于類方法和實例方法,synchronized 關(guān)鍵字的鎖對象分別是類的 class 對象和 this 對象,而 @Synchronized 的鎖對象分別是 私有靜態(tài) final 對象 lock 和 私有 final 對象 lock,當然,也可以自己指定鎖對象,此外也提供默認的構(gòu)造方法。

總結(jié)
本文主要站在巨人的肩上,文章內(nèi)容來源一下三篇文章。本文主要提取了三篇文章中的優(yōu)點整合而成。
文章參考: