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日志框架時使用
反編譯大法
- Java Decompiler (http://jd.benow.ca)
分為:JD-GUI,JD-Eclipse,JD-IntelliJ
可以將Lombok修改之后編譯的字節(jié)碼反編譯成源碼,看看其如何實(shí)現(xiàn)。
Lombok驗(yàn)證
- 通過Java Decompiler驗(yàn)證Class文件
Lombok工作中需要注意的點(diǎn)
- 在類需要序列化、反序列化時詳細(xì)控制字段的時候,例如:Jackson json序列化
- 使用Lombok雖然能夠省去手動創(chuàng)建setter和getters方法等繁瑣,但是卻降低了閱讀源代碼的舒適度
