Lombok

Lombok介紹

Lombok官網(wǎng):(https://projectlombok.org)
通過簡單的注解來精簡代碼達(dá)到消除冗長代碼的目的

Lombok優(yōu)點(diǎn)

  • 提高編碼效率
  • 是代碼更簡潔
  • 消除冗長代碼
  • 避免修改字段名字時忘記修改方法名
  • 提高下‘逼格’

IDE上必須要支持Lombok,否則會報錯

Lombok原理

  • JSR 269 Pluggable Annotation Processing API
  • javac從Java6開始支持“JSR 269 API”規(guī)范
  • 只要程序?qū)崿F(xiàn)了該API,就能在javac運(yùn)行的時候得到調(diào)用
  • Lombok實(shí)現(xiàn)了“JSR 269 API”,在編譯時,javac編譯源碼的具體流程如下:


    image.png

Maven引入Lombok

pom.xml文件,加入到<dependencies>中:

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

依賴可以從官網(wǎng)拿到

Lombok實(shí)戰(zhàn)coding

  • @Data
    包含@Getter,@Setter,@ToString,@EqualsAndHashCode
  • @Getter
    生成getter方法
  • @Getter(AccessLevel.PROTECTED)
    生成的getter方法不是默認(rèn)的public而是protect
  • @Setter
    生成setter方法
  • @Setter(AccessLevel.PROTECTED)
    生成的setter方法不是默認(rèn)的public而是protect
  • @NoArgsContructor
    無參構(gòu)造器
  • @AllArgsContructor
    所有參數(shù)構(gòu)造器
  • @ToString
    把這個類聲明的所有屬性轉(zhuǎn)化成string
  • @EqualsAndHashCode
    使用Lombok默認(rèn)規(guī)則重寫equals和hashCode方法
  • @Slf4j
    聲明這個注解之后可以直接調(diào)用log進(jìn)行日志操作,使用的是logback
  • @Log4j
    項目用Log4j日志框架時使用

反編譯大法

可以將Lombok修改之后編譯的字節(jié)碼反編譯成源碼,看看其如何實(shí)現(xiàn)。

Lombok驗(yàn)證

  • 通過Java Decompiler驗(yàn)證Class文件

Lombok工作中需要注意的點(diǎn)

  • 在類需要序列化、反序列化時詳細(xì)控制字段的時候,例如:Jackson json序列化
  • 使用Lombok雖然能夠省去手動創(chuàng)建setter和getters方法等繁瑣,但是卻降低了閱讀源代碼的舒適度
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容