日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Lombok框架集成与原理解析

發布時間:2025/5/22 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Lombok框架集成与原理解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是Lombok

1、龍目島
2、印度尼西亞西努沙登加拉(Nusa Tenggara Barat)省島嶼
3、西龍目海峽面對巴厘島,東隔阿拉斯(Alas)海峽面松巴哇(Sumbawa)島,北瀕爪哇島,南臨印度洋。

官網對其的介紹:通過簡單注解來精簡代碼達到消除冗長代碼的目的

Lombok有什么優點

1、提高編碼效率
2、使代碼更簡潔
3、消除冗長代碼
4、避免修改字段名字時忘記修改方法名
5、提高下“逼格”
注:IDE上必須要支持Lombok,否則IDE會報錯

Lombok的實現原理

1、其開發是遵循JSR 269 Pluggable Annotation Processing API
2、而javac從java6開始支持“JSR 269 API”規范
3、即只要程序實現了該API,就能在javac運行的時候得到調用
4、Lombok實現了“JSR 269 API”,在編譯時,javac編譯源碼的具體流程如下:

引入項目

在maven的pom配置文件中引入

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.2</version><scope>provided</scope> </dependency> 注:如果是IDEA需要安裝Lombok插件、Eclipse則下載對應的jar

使用Lombok

@Data :生成對應Getter、Setter
@Getter
@Getter(AccessLevel.PROTECTED)-生成的Get的權限是protected
@Setter
@Setter(AccessLevel.PROTECTED)

@NoArgsConstructor-無參構造器
@AllArgsConstructor-所有參數構造器
@ToString
@ToString(exclude = “column”)-排除

@EqualsAndHashCode
@EqualsAndHashCode(exclude = “column”)
@Slf4j(使用logback日志框架)
@log4j(使用log4j日志框架)

@ToString(exclude = {“column1”,”column2“})黑名單
@ToString(of = {“column1”,“column2”})白名單
EqualsAndHashCode同上

@Data包含了(@Getter、@Setter、@ToString、@EqualsAndHashCode)

以上是大致的一些使用方式,讓我們通過反編譯來了解Lombok的實現。

反編譯了解Lombok

Java Decompiler大家可以在這個網站下載JD-GUI,一個便捷的反編譯工具。
我們通過Java Decompiler驗證 Clas文件

@Data @NoArgsConstructor @AllArgsConstructor @EqualsAndHashCode(exclude = "name") @ToString(of = "password") public class Person implements Serializable{private static final long serialVersionUID = 5965420331615591278L;private Integer id;private String name;private String password; } @Slf4j public class PersonServiceImpl {public Person findOne(){log.info("findOne success");return new Person();}}

我在一個pojo對象中注入了Lombok的注解,并保持這樣的源碼,還有模擬的Service層使用log注解,接下來我們編譯一下項目,看看對應生成的class文件是怎么樣的。

這里我們可以看到,編譯出來的class文件與源碼是不一樣的,Lombok幫我們進行了改變。

package com.example.lombok.pojo;import java.io.Serializable;public class Personimplements Serializable {private static final long serialVersionUID = 5965420331615591278L;private Integer id;private String name;private String password;public void setId(Integer id){this.id = id;}public void setName(String name){this.name = name;}public void setPassword(String password){this.password = password;}public Person(Integer id, String name, String password){this.id = id;this.name = name;this.password = password;}public boolean equals(Object o){if (o == this) {return true;}if (!(o instanceof Person)) {return false;}Person other = (Person)o;if (!other.canEqual(this)) {return false;}Object this$id = getId();Object other$id = other.getId();if (this$id == null ? other$id != null : !this$id.equals(other$id)) {return false;}Object this$password = getPassword();Object other$password = other.getPassword();return this$password == null ? other$password == null : this$password.equals(other$password);}protected boolean canEqual(Object other){return other instanceof Person;}public int hashCode(){int PRIME = 59;int result = 1;Object $id = getId();result = result * 59 + ($id == null ? 43 : $id.hashCode());Object $password = getPassword();result = result * 59 + ($password == null ? 43 : $password.hashCode());return result;}public String toString(){return "Person(password=" + getPassword() + ")";}public Integer getId(){return this.id;}public String getName(){return this.name;}public String getPassword(){return this.password;}public Person() {} } package com.example.lombok.service;import com.example.lombok.pojo.Person; import org.slf4j.Logger; import org.slf4j.LoggerFactory;public class PersonServiceImpl {private static final Logger log = LoggerFactory.getLogger(PersonServiceImpl.class);public Person findOne(){log.info("findOne success");return new Person();} }

如果本對你有幫助,歡迎關注本人技術公眾號,或者點贊,謝謝。

總結

以上是生活随笔為你收集整理的Lombok框架集成与原理解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。