Java工具包之Lombok使用
在Spring項目中創(chuàng)建java對象,如果使用手動生成getter、setter、toString等方法提供調(diào)用接口,會導(dǎo)致代碼修改成本與復(fù)雜度大大增加;
lombok是一個Java工具庫,通過添加注解的方式簡化了Java的開發(fā);
接下來簡單介紹lombok的使用方法;
使用lombok有兩種方法:
(1)maven倉庫手動導(dǎo)入依賴+注解;
(2)EditStarters插件+注解;
1. maven倉庫手動導(dǎo)入依賴+注解
1.1 maven倉庫引入依賴
鏈接如下:
https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.24
copy至pom.xml文件中即可:
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>注:勿忘在maven面板中進行刷新:

1.2 在類上使用@Data注解
在java類上增加@Data注解:
package com.example.demo.controller;
import lombok.Data;
import java.util.Date;
@Data
public class MessageInfo {
private String from;
private String to;
private String message;
private Date CreateTime;
}此時在對應(yīng)的Controller中增加相應(yīng)的獲取屬性的get方法,即使沒有顯式編寫相關(guān)代碼,但可見可以成功調(diào)用: (.getFrom()方法未標紅報錯)
package com.example.demo.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RequestMapping("/message")
@RestController
public class MessageController {
@RequestMapping("/publish")
public Boolean publishMessage(MessageInfo messageInfo){
String from = messageInfo.getFrom();
return false;
}
@RequestMapping("/getMessageList")
public List<MessageInfo> getMessageList(){
return null;
}
}(請忽略該controller的業(yè)務(wù)邏輯,此處僅用于輔助展示lombok作用)
@Data注解就是lombok提供的通過注解自動生成屬性的get與set方法,可避免修改接口屬性導(dǎo)致需修改其對應(yīng)的get與set方法造成的麻煩,同時也可以消除冗余代碼;
1.3 在屬性上使用@Getter與@Setter注解
@Data注解修飾類時,表示提供該類所有屬性的get與set方法,這對于某些屬性不希望被獲取是不夠靈活的,故而可以在屬性上使用@Getter與@Setter注解,以實現(xiàn)面向?qū)傩陨蒰et與set方法:
package com.example.demo2.controller;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.util.Date;
@ToString
public class MessageInfo {
@Getter @Setter
private String from;
@Getter @Setter
private String to;
private String message;
private Date CreateTime;
}以上代碼的含義為:屬性from支持獲取與寫入,to支持獲?。?/p>
注:附lombok相較于@Data更細顆粒度的注解有:
| 注解 | 作用 |
| @Getter | 自動添加getter方法 |
| @Setter | 自動添加setter方法 |
| @ToString | 自動添加toString方法 |
| @EqualAndHashCode | 自動添加equals和hashCode方法 |
| @NoArgsConstructor | 自動添加無參構(gòu)造方法 |
| @AllArgsConstructor | 自動添加全屬性構(gòu)造方法,順序按照屬性的定義順序 |
| @NonNull | 屬性不能為null |
| @RequireArgsConstructor | 自動添加必須屬性的構(gòu)造方法,final+@Null的屬性為必須 |
@Data = @Getter + @Setter +@ToString +@ EqualAndHashCode +@ RequireArgsConstructor + @ NoArgsConstructor;
2. EditStarters插件+注解
2.1 安裝EditStarters插件

安裝完后重啟IDEA方可生效;
2.2 在pom.xml中進行操作



直接增添lombok標簽即可;
注:
- 1、勿忘刷新maven;
- 2、如果URL錯誤,可更換為以下URL(選擇Gitee):


3、使用此方法生成的dependency如下:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>是沒有版本標識的;
2.3 在java對象類中使用注解
注解使用方法同第一種方法,詳見方法1的2和3步驟;
3. lombok工具使用結(jié)果查看
3.1 手動package

3.2 查看文件內(nèi)容

文件內(nèi)容如下:
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.example.demo2.controller;
import java.util.Date;
public class MessageInfo {
private String from;
private String to;
private String message;
private Date CreateTime;
public MessageInfo() {
}
public String toString() {
return "MessageInfo(from=" + this.getFrom() + ", to=" + this.getTo() + ", message=" + this.message + ", CreateTime=" + this.CreateTime + ")";
}
public String getFrom() {
return this.from;
}
public void setFrom(String from) {
this.from = from;
}
public String getTo() {
return this.to;
}
public void setTo(String to) {
this.to = to;
}
}對比原始文件:
package com.example.demo2.controller;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.util.Date;
@ToString
public class MessageInfo {
@Getter @Setter
private String from;
@Getter @Setter
private String to;
private String message;
private Date CreateTime;
}可見lombok在編譯階段生成了部分代碼;
注:此處雖然處于class目錄下,但該文件并不是字節(jié)碼文件,而是經(jīng)過idea反編譯的;
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot應(yīng)用啟動慢的原因分析及優(yōu)化方法
在使用Spring Boot進行開發(fā)時,快速啟動應(yīng)用程序是一個非常重要的需求,然而,在某些情況下,我們會遇到Spring Boot應(yīng)用啟動緩慢的問題,本文將分析Spring Boot應(yīng)用啟動慢的常見原因,并提供一些優(yōu)化方法,需要的朋友可以參考下2024-08-08
Spring?Boot數(shù)據(jù)響應(yīng)問題實例詳解
這篇文章主要給大家介紹了關(guān)于Spring?Boot數(shù)據(jù)響應(yīng)問題的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2022-03-03
Spring MVC如何設(shè)置請求頭和響應(yīng)頭的Header
這篇文章主要介紹了Spring MVC如何設(shè)置請求頭和響應(yīng)頭的Header問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-03-03
Spring:@Async注解和AsyncResult與CompletableFuture使用問題
這篇文章主要介紹了Spring:@Async注解和AsyncResult與CompletableFuture使用問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08
Spring Boot環(huán)境屬性占位符解析及類型轉(zhuǎn)換詳解
這篇文章主要給大家介紹了關(guān)于Spring Boot環(huán)境屬性占位符解析及類型轉(zhuǎn)換的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-08-08

