一疏唾、Lombok介紹以及優(yōu)點
- 介紹
1.1 龍目島:位于印度尼西亞西努沙登加拉省島嶼兄春;
1.2 官網(wǎng):https://projectlombok.org;
1.3 作用:通過簡單注解來精簡代碼達到消除冗長代碼的目的;
- 優(yōu)點(優(yōu)點有很多,主要列舉自己認為重要的)
2.1 提高編碼效率卦尊;
2.2 使代碼更簡潔;
2.3 消除冗長代碼舌厨;
2.4 避免修改字段名字時忘記修改方法名;
2.5 注意:IDE上必須要支持Lombok忿薇,否則會報錯裙椭;
二、Lombok原理
- 為什么能使用Lombok署浩?
Lombok支持JSR 269 Pluggable Annotation Processing API揉燃,Javac從Java6開始支持“JSR 269 API”規(guī)范,只要程序?qū)崿F(xiàn)了該API筋栋,就能在Javac運行的時候得到調(diào)用炊汤;
2.Javac編譯源碼的具體流程如下:Lombok運行原理
三、Lombok引入
使用Maven引入
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven</artifactId>
<version>1.16.20.0</version>
</dependency>
四、Lombok插件(IDEA)
IDEA中安裝Lombok插件
IDEA中安裝Lombok插件
五抢腐、Lombok常用注解
@Data 注解在類上姑曙;提供類所有屬性的 getting 和 setting 方法,此外還提供了equals迈倍、canEqual伤靠、hashCode、toString 方法
@Setter :注解在屬性上啼染;為屬性提供 setting 方法
@Getter :注解在屬性上宴合;為屬性提供 getting 方法
@Log4j :注解在類上;為類提供一個 屬性名為log 的 log4j 日志對象
@NoArgsConstructor :注解在類上迹鹅;為類提供一個無參的構(gòu)造方法
@AllArgsConstructor :注解在類上卦洽;為類提供一個全參的構(gòu)造方法
@Cleanup : 可以關閉流
@Builder : 被注解的類加個構(gòu)造者模式
@Synchronized : 加個同步鎖
@SneakyThrows : 等同于try/catch 捕獲異常
@NonNull : 如果給參數(shù)加個這個注解 參數(shù)為null會拋出空指針異常
@Value : 注解和@Data類似,區(qū)別在于它會把所有成員變量默認定義為private final修飾斜棚,并且不會生成set方法阀蒂。
@toString:注解在類上;為類提供toString方法(可以添加排除和依賴)打肝;
官方文檔https://projectlombok.org/features/index.html
六脂新、反編譯官網(wǎng):http://jd.benow.ca/
七、Lombok驗證(通過Java Decompiler驗證Class文件)
八粗梭、Lombok工作中需要注意的點
在類需要序列化争便、反序列化時詳細控制字段時(例如:Jackson json序列化);
使用Lombok能夠省去手動創(chuàng)建setter和getter方法断医,但是也降低了源代碼文件的可讀性和完整性滞乙,降低了源代碼閱讀的舒適度;
使用@Slf4j還是@Log4j看項目使用的日志框架鉴嗤;
選擇適合的地方使用Lombok斩启,例如POJO是一個好地方,因為他很單純醉锅;