一文搞懂Lombok Plugins使用與原理

在這里插入圖片描述

目錄

一文搞懂Lombok使用與原理

  • 1.前言
  • 2.什么是Lombok
  • 3. IntelliJ安裝Lombok
    • 3.1通過IntelliJ的插件中心安裝
    • 3.2在項目中使用Lombok Plugins
  • 4.Lombok 注解大全說明
    • 4.1POJO類常用注解
    • 4.2其他注解
  • 5.Lombok常見問題
  • 6.總結
  • 7.參考


文章所屬專區 超鏈接


1.前言

2.什么是Lombok

Lombok是一款強大的Java工具,主要用于簡化Java開發過程,尤其是對于簡單的Java對象(POJO)。它通過注解的方式,幫助開發者消除Java的冗長代碼,如getter、setter、equals、hashCode等方法,從而大大提高開發效率

3. IntelliJ安裝Lombok

需要注意的是:IDEA 2020.3版本內置了lombok插件,所以無需在IntelliJ額外安裝了,可能會出現其他問題!!!

3.1通過IntelliJ的插件中心安裝

setting->Plugins->搜索Lombok Plugins 安裝,重啟即可
在這里插入圖片描述

3.2在項目中使用Lombok Plugins

在maven中,在相關pom文件直接加入依賴

<dependency>     <groupId>org.projectlombok</groupId>     <artifactId>lombok</artifactId>     <version>1.16.8</version> 
</dependency>

4.Lombok 注解大全說明

4.1POJO類常用注解

@Data:注解在類上,相當于同時使用了@ToString、@EqualsAndHashCod- e、@Getter、@Setter 和@RequiredArgsConstrutor 這些注解,對于 POJO 類十分有用
@ToString :這個注解可以使類自動覆寫 toString 方法。在使用時,你可以添加其他參數,例如 @ToString(exclude=”id”) 表示排除id屬性,或者 @ToString(callSuper=true, includeFieldNames=true) 表示調用父類的 toString 方法,包含所有屬性。
@Getter/@Setter:這兩個注解可以為屬性生成 getter 和 setter 方法。在使用時,你可以選擇訪問范圍,比如是否公開所有屬性,或者只對某些屬性進行getter和setter。
@NonNull:這個注解可以用于方法參數,它會在方法內部對參數進行非空判斷,如果參數為空,則會拋出 NullPointerException。
@Cleanup: 這個注解可以用于局部變量,它會在變量離開作用域前自動清理資源。
@EqualsAndHashCode:這個注解可以使類自動生成 equals 方法和 hashCode 方法。在使用時,你可以選擇是否覆蓋父類的 equals 和 hashCode 方法,以及是否包含哪些屬性。
@Builder:對于加了@Builder注解的方法,可以知道,編譯后這個類多了一個builder()方法,以及一個靜態內部類。通過這個注解可以在類上創建一個對象,并且可以鏈式的進行賦值。

import lombok.Builder;
import lombok.ToString;@Builder
@ToString
public class User {private String name;private int age;private String email;
}ser user = User.builder().name("Tom").age(25).email("tom@example.com").build();

4.2其他注解

@NoArgsConstructor:這個注解用于在類上,這個注解可以生成無參構造方法。使用方法是在類上直接使用該注解即可。示例如下:
@RequiredArgsConstructor:這個注解同樣用于在類上,但是它要求所有的構造方法參數都必須被標注。使用方法是在類上直接使用該注解即可。
@AllArgsConstructor:這個注解也用于在類上,與@RequiredArgsConstructor類似,但是它要求所有的構造方法參數都必須被標注,包括那些沒有在類中聲明的參數。示例如下:
@Value:用在類上,是@Data 的不可變形式,相當于為屬性添加 final 聲明,只提供 getter 方法,而不提供 setter 方法
@SneakyThrows:自動拋受檢異常,而無需顯式在方法上使用 throws 語句
@Log:根據不同的注解生成不同類型的 log 對象,但是實例名稱都是 log,有六種可選實現類
@CommonsLog Creates log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);
@Log Creates log = java.util.logging.Logger.getLogger(LogExample.class.getName());
@Log4j Creates log = org.apache.log4j.Logger.getLogger(LogExample.class);
@Log4j2 Creates log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);
@Slf4j Creates log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
@XSlf4j Creates log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);

5.Lombok常見問題

Lombok常見問題
最全一篇Lombok使用講解,及原理,真香啊
java lombok注解字段默認值 lombok常用注解

6.總結

Lombok是一款Java開發插件,它提供了一系列的注解,這些注解可以幫助開發者消除Java開發中的冗長和繁瑣的代碼,尤其對于簡單的Java模型對象(POJO)。

7.參考

十分鐘搞懂Lombok使用與原理
最全一篇Lombok使用講解,及原理,真香啊
java lombok注解字段默認值 lombok常用注解

給個三連吧 謝謝謝謝謝謝了
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/212228.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/212228.shtml
英文地址,請注明出處:http://en.pswp.cn/news/212228.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

產品創新受贊譽,懌星榮獲2023未來汽車(電子和軟件)創新創業大賽一等獎

2023未來汽車&#xff08;電子和軟件&#xff09;創新創業大賽 11月29日&#xff0c;上海臨港&#xff0c;由中國汽車工程學會和中國&#xff08;上海&#xff09;自由貿易試驗區臨港新片區管理委員會聯合舉辦的“2023未來汽車&#xff08;電子和軟件&#xff09;創新創業大賽…

二叉搜索樹中第K小的元素[中等]

優質博文&#xff1a;IT-BLOG-CN 一、題目 給定一個二叉搜索樹的根節點root&#xff0c;和一個整數k&#xff0c;請你設計一個算法查找其中第k個最小元素&#xff08;從1開始計數&#xff09;。 示例 1&#xff1a; 輸入&#xff1a;root [3,1,4,null,2], k 1 輸出&#x…

RHEL8_Linux硬盤管理

主要介紹Linux磁盤管理 了解分區的概念對硬盤進行分區常見的分區swap分區的管理 1.了解分區的概念 1&#xff09;新的硬盤首先需要對其進行分區和格式化&#xff0c;下面來了解以下硬盤的結構&#xff0c;如圖。 2&#xff09;硬盤的磁盤上有一個個圈&#xff0c;每兩個圈組…

JVM虛擬機系統性學習-類加載子系統

類加載子系統 類加載的時機 類加載的時機主要有 4 個&#xff1a; 遇到 new、getstatic、putstatic、invokestatic 這四條字節碼指令時&#xff0c;如果對應的類沒有初始化&#xff0c;則要先進行初始化 new 關鍵字創建對象時讀取或設置一個類型的靜態字段時&#xff08;被 …

javaSwing酒店管理系統

一、 使用方法&#xff1a; 在使用前&#xff0c;需要到druid.properties 配置文件中&#xff0c;修改自己對應于自己數據庫的屬性&#xff1b;如用戶名&#xff0c;密碼等 driverClassNamecom.mysql.cj.jdbc.Driver urljdbc:mysql:///hotel?useUnicodetrue&characterEn…

midwayjs從零開始創建項目,連接mikro-orm框架(必須有java的springboot基礎)

前言&#xff1a; 我一直都是用java的springboot開發項目&#xff0c;然后進來新公司之后&#xff0c;公司的后端是用node.js&#xff0c;然后框架用的是 midwayjs &#xff0c;然后網上的資料比較少&#xff0c;在此特地記錄一波 文檔&#xff1a; 1.官方文檔&#xff1a;介紹…

vue 前端crypto-js 如何實現加密解密

npm 安裝 crypto-js 引用 import CryptoJS from "crypto-js"; 或者 import CryptoJS from "crypto-js"; //秘鑰 var aesKey "s10dfc3321ba59abbe123057f20f883e"; //將秘鑰轉換成Utf8字節數組 var key CryptoJS.enc.Utf8.parse(aesKey); /…

Spring Boot 3.0 : 集成flyway數據庫版本控制工具

目錄 Spring Boot 3.0 : 集成flyway數據庫版本控制工具flyway是什么為什么使用flyway主要特性支持的數據庫&#xff1a; flyway如何使用spring boot 集成實現引入依賴配置sql版本控制約定3種版本類型 運行SpringFlyway 8.2.1及以后版本不再支持MySQL&#xff1f; 個人主頁: 【?…

常見web漏洞的流量分析

常見web漏洞的流量分析 文章目錄 常見web漏洞的流量分析工具sql注入的流量分析XSS注入的流量分析文件上傳漏洞流量分析文件包含漏洞流量分析文件讀取漏洞流量分析ssrf流量分析shiro反序列化流量分析jwt流量分析暴力破解流量分析命令執行流量分析反彈shell 工具 攻擊機受害機wi…

Unity DOTS中的baking(一) Baker簡介

Unity DOTS中的baking&#xff08;一&#xff09; Baker簡介 baking是DOTS ECS工作流的一環&#xff0c;大概的意思就是將原先Editor下的GameObject數據&#xff0c;全部轉換為Entity數據的過程。baking是一個不可逆的過程&#xff0c;原先的GameObject在運行時不復存在&#x…

leetcode 股票DP系列 總結篇

121. 買賣股票的最佳時機 你只能選擇 某一天 買入這只股票&#xff0c;并選擇在 未來的某一個不同的日子 賣出該股票。 只能進行一次交易 很簡單&#xff0c;只需邊遍歷邊記錄最小值即可。 class Solution { public:int maxProfit(vector<int>& prices) {int res …

Vue-安裝及安裝vscode相應插件

安裝Vue 安裝nodejs&#xff0c; 地址&#xff1a;https://nodejs.org/en 下載后直接安裝。 安裝后重新打開命令行工具&#xff0c;輸入 node -v PS C:\Users\zcl36> node -v v20.10.0 2. 安裝vue包npm install -g vue/cli安裝之后&#xff0c;你就可以在命令行中訪問 vue…

【git】關于git二三事

文章目錄 前言一、創建版本庫1.通過命令 git init 把這個目錄變成git可以管理的倉庫2.將修改的內容添加到版本庫2.1 git add .2.2 git commit -m "Xxxx"2.3 git status 2.4 git diff readme.txt3.版本回退3.1 git log3.2 git reset --hard HEAD^ 二、理解工作區與暫存…

操作系統內部機制學習

切換線程時需要保存什么 函數需要保存嗎&#xff1f;函數在Flash上&#xff0c;不會被破壞&#xff0c;無需保存。函數執行到了哪里&#xff1f;需要保存嗎&#xff1f;需要保存。全局變量需要保存嗎&#xff1f;全局變量在內存上&#xff0c;無需保存。局部變量需要保存嗎&am…

Leetcode—337.打家劫舍III【中等】

2023每日刷題&#xff08;五十二&#xff09; Leetcode—337.打家劫舍III 算法思想 實現代碼 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(null…

I.MX6ULL_Linux_驅動篇(46)linux LCD驅動

LCD 是很常用的一個外設&#xff0c;在Linux 下LCD 的使用更加廣泛&#xff0c;在搭配 QT 這樣的 GUI 庫下可以制作出非常精美的 UI 界面。本章我們就來學習一下如何在 Linux 下驅動 LCD 屏幕。 Linux 下 LCD 驅動簡析 Framebuffer 設備 先來回顧一下裸機的時候 LCD 驅動是怎…

前端入門:HTML初級指南,網頁的簡單實現!

代碼部分&#xff1a; <!DOCTYPE html> <!-- 上方為DOCTYPE聲明&#xff0c;指定文檔類型為HTML --> <html lang"en"> <!-- html標簽為整個頁面的根元素 --> <head> <!-- title標簽用于定義文檔標題 --> <title>初始HT…

單點登錄方案調研與實現

作用 在一個系統登錄后&#xff0c;其他系統也能共享該登錄狀態&#xff0c;無需重新登錄。 演進 cookie → session → token →單點登錄 Cookie 可以實現瀏覽器和服務器狀態的記錄&#xff0c;但Cookie會出現存儲體積過大和可以在前后端修改的問題 Session 為了解決Co…

【其他數學】結式 resultant

結式 resultant 2023年11月30日 #analysis 文章目錄 結式 resultant介紹Sylvester矩陣應用在消元中的應用傳遞函數的化簡 下鏈 介紹 結式用來計算曲線的交點、消元、找參數化曲線的隱含方程。 為了引出定義&#xff0c;思考如下問題&#xff1a; f ( x ) x 2 ? 5 x 6 g (…

UVM建造測試用例

&#xff08;1&#xff09;加入base_test 在一個實際應用的UVM驗證平臺中&#xff0c;my_env并不是樹根&#xff0c;通常來說&#xff0c;樹根是一個基于uvm_test派生的類。真正的測試用例都是基于base_test派生的一個類。 class base_test extends uvm_test;my_env e…