1. 程式人生 > >SpringBoot 整合Lombok

SpringBoot 整合Lombok

lombok簡介    

我們在開發過程中,通常都會定義大量的JavaBean,然後通過IDE去生成其屬性的構造器、getter、setter、equals、hashcode、toString方法,當要增加屬性或者對某個屬性進行改變時,比如命名、型別等,都需要重新去生成上面提到的這些方法。這樣重複的勞動沒有任何意義,Lombok裡面的註解可以輕鬆解決這些問題。

Lombok簡介 Lombok是一個可以通過簡單的註解形式來幫助我們簡化消除一些必須有但顯得很臃腫的Java程式碼的工具,通過使用對應的註解,可以在編譯原始碼的時候生成對應的方法。 官方地址:https://projectlombok.org/ github地址:https://github.com/rzwitserloot/lombok 官網對其解釋為: 這裡簡單說下lombok實現的原理:主要是通過抽象語法樹(AST),在編譯處理後,匹配到有其註解的類,那麼註解編譯器就會自動去匹配專案中的註解對應到在lombok語法樹中的註解檔案,並經過自動編譯匹配來生成對應類中的getter或者setter方法,達到簡化程式碼的目的。 利用此原理,也可自行編寫一些工作中一些經常使用到的,比如實體類轉Map物件,map物件轉實體類,原本使用Beanutils或者cglib的BeanCopier實現轉換,前者使用的是反射的機制,所以效能相對較差,後者是使用修改位元組碼技術,效能在未使用Converter時基本等同於set和get方法。但說白了還是麻煩,畢竟還需要快取物件等做到複用等。而使用lombok的形式的話,一切都是自動的,效能基本是沒有損失的,由於對AST不熟悉,之後有時間了可以進行外掛編寫下

idea 安裝lombok

 新增maven依賴

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.20</version>
</dependency>

常用註解介紹

@Getter / @Setter:可以作用在類上和屬性上,放在類上,會對所有的非靜態(non-static)屬性生成Getter/Setter方法,放在屬性上,會對該屬性生成Getter/Setter方法。並可以指定Getter/Setter方法的訪問級別。

@EqualsAndHashCode :預設情況下,會使用所有非瞬態(non-transient)和非靜態(non-static)欄位來生成equals和hascode方法,也可以指定具體使用哪些屬性。

@ToString 生成toString方法,預設情況下,會輸出類名、所有屬性,屬性會按照順序輸出,以逗號分割。

@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor:無參構造器、部分引數構造器、全參構造器 ** @Data:包含@ToString, @EqualsAndHashCode, 所有屬性的@Getter, 所有non-final屬性的@Setter和@RequiredArgsConstructor的組合,通常情況下,基本上使用這個註解就足夠了。**

@Budilder:可以進行Builder方式初始化。

@Slf4j:等同於:private final Logger logger = LoggerFactory.getLogger(XXX.class);簡直不能更爽了!一般上用在其他java類上