在SpringBoot中使用lombok的注意事項
更新時間:2021年12月01日 10:28:16 作者:南宮拾壹
這篇文章主要介紹了在SpringBoot中使用lombok的注意事項,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
Lombok需求
在傳統(tǒng)的開發(fā)過程中,一個javabean開發(fā)非常瑣碎和麻煩,如下:
package com.example.entity; public class User { // 用戶編號 private Integer id; // 用戶昵稱 private String nickname; // 用戶密碼 private String password; // 用戶頭像 private String avatar; // 用戶地址 private String adddress; public User() { } public User(Integer id, String nickname, String password, String avatar, String adddress) { this.id = id; this.nickname = nickname; this.password = password; this.avatar = avatar; this.adddress = adddress; } @Override public String toString() { return "User{" + "id=" + id + ", nickname='" + nickname + '\'' + ", password='" + password + '\'' + ", avatar='" + avatar + '\'' + ", adddress='" + adddress + '\'' + '}'; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getAvatar() { return avatar; } public void setAvatar(String avatar) { this.avatar = avatar; } public String getAdddress() { return adddress; } public void setAdddress(String adddress) { this.adddress = adddress; } }
你要生成
getter/setter
無參構造函數(shù)
有參構造函數(shù)
toString
hashcode
等等。
在開發(fā)中有一個利器:Lombok 可以解決和優(yōu)化這個問題。
Lombok的使用
編寫pojo時,經(jīng)常需要編寫構造函數(shù)和gettersetter方法,屬性多的時候,非常浪費時間,使用lombok插件可以解決這個問題
開發(fā)工具無論是idea還是eclipse都必須要安裝插件
以idea為例如下:
在項目中依賴Lombok如下
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.20</version> </dependency>
簡化javabean
package com.example.entity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.ToString; @Data // getter/setter @ToString // toString @AllArgsConstructor // 有參構造函數(shù) @NoArgsConstructor // 無參構造函數(shù) public class User { // 用戶編號 private Integer id; // 用戶昵稱 private String nickname; // 用戶密碼 private String password; // 用戶頭像 private String avatar; // 用戶地址 private String adddress; }
證明lombok在編譯以后會自動生成
Lombok其他的注解
@Data
:自動提供getter和setter、hashCode、equals、toString等方法@Getter
:自動提供getter方法@Setter
:自動提供setter方法@ToString
:生成toString方法@NoArgsConstructor
:自動生成無參數(shù)構造函數(shù)@AllArgsConstructor
:自動生成全參數(shù)構造函數(shù)@Builder
:可以實現(xiàn)屬性連續(xù)賦值@Accessors
@Accessors批注用于配置lombok如何生成和查找getter和setter。標注到類上,chain屬性設置為true時,類的所有屬性的setter方法返回值將為this,用來支持setter方法的鏈式寫法@Slf4j
and@Log4j
:自動在bean中提供log變量,在需要打印日志的類中使用,項目中使用slf4j、log4j日志框架@NonNull
:這個注解可以用在成員方法或者構造方法的參數(shù)前面,會自動產(chǎn)生一個關于此參數(shù)的非空檢查,如果參數(shù)為空,則拋出一個空指針異常。@Cleanup
:注解用于確保已分配的資源被釋放(IO的連接關閉)。@Synchronized
:注解自動添加到同步機制,生成的代碼并不是直接鎖方法,而是鎖代碼塊, 作用范圍是方法上。ull :這個注解可以用在成員方法或者構造方法的參數(shù)前面,會自動產(chǎn)生一個關于此參數(shù)的非空檢查,如果參數(shù)為空,則拋出一個空指針異常。@Cleanup
:注解用于確保已分配的資源被釋放(IO的連接關閉)。@Synchronized
:注解自動添加到同步機制,生成的代碼并不是直接鎖方法,而是鎖代碼塊, 作用范圍是方法上。@Value
注解和@Data
類似,區(qū)別在于它會把所有成員變量默認定義為private final修飾,并且不會生成set方法。
lombok插件使用和lombok不起作用的解決
idea安裝插件
引入依賴
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.20</version> <scope>provided</scope> </dependency>
實體類中使用@Data
@Data public class Employee { private Integer id; // id private String lastName; // 名字 private String email; // 郵箱 private Integer gender; // 性別 1男 0女 private Integer dId; // 部門id }
@Data不起作用解決法方法
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Spring Boot 通過AOP和自定義注解實現(xiàn)權限控制的方法
這篇文章主要介紹了Spring Boot 通過AOP和自定義注解實現(xiàn)權限控制,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-11-11SpringBoot基于數(shù)據(jù)庫的定時任務統(tǒng)一管理的實現(xiàn)
這篇文章主要介紹了SpringBoot基于數(shù)據(jù)庫的定時任務統(tǒng)一管理的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-12-12