欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java編碼輔助工具Lombok用法詳解

 更新時間:2019年06月25日 09:53:39   作者:空山新雨  
這篇文章主要介紹了Java編碼輔助工具Lombok用法詳解,可以使用Lombok來避免這種重復(fù)的操作,減少非核心代碼的臃腫,提高編碼效率,需要的朋友可以參考下

前言

在項目開發(fā)過程中,經(jīng)常會涉及到一些調(diào)整很少但又必不可少的環(huán)節(jié),比如實體類的Getter/Setter方法,ToString方法等。這時可以使用Lombok來避免這種重復(fù)的操作,減少非核心代碼的臃腫,提高編碼效率。

如何在IntelliJ IDEA中引入Lombok

安裝Lombok 插件(否則在調(diào)用setter/getter方法時IDE會提示報錯): File -> Settings -> Plugins 搜索Lombok Plugin完成安裝。

pom.xml中引入lombok依賴(其中<scope>provided</scope>表示只在編譯、測試階段依賴該jar,運行階段不依賴(如運行容器中已包含了該jar,則置為provided避免jar沖突),默認<scope>compile</scope>則表示在編譯、測試、運行階段都依賴):

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
<scope>provided</scope>
</dependency>

Lombok注解用途

@Getter/@Setter

為字段生成Getter和Setter方法,可以注解到字段或者類上(注解在類上會為類中所有字段生成Getter和Setter方法)。默認是public類型的,如果需要的話可以修改方法的訪問級別: @Getter(AccessLevel.PROTECTED)

Lombok中的注解一般都會包含一個無參構(gòu)造函數(shù)注解@NoArgsConstructor(用于生成無參構(gòu)造函數(shù)) ,所以還會額外生成一個無參構(gòu)造函數(shù)

@NonNull

調(diào)用字段的setter方法時,如果傳的參數(shù)為null,則會拋出空異常NullPointerException,生成setter方法時會檢查參數(shù)是否為空

@NoArgsConstructor

生成一個無參構(gòu)造方法。當(dāng)類中有final字段沒有被初始化時,編譯器會報錯,此時可用@NoArgsConstructor(force = true),然后就會為沒有初始化的final字段設(shè)置默認值 0 / false / null, 這樣編譯器就不會報錯。對于具有約束的字段(例如@NonNull字段),不會生成檢查或分配,因此請注意,正確初始化這些字段之前,這些約束無效。

@RequiredArgsConstructor

生成構(gòu)造方法(可能帶參數(shù)也可能不帶參數(shù)),如果帶參數(shù),這參數(shù)只能是以final修飾的未經(jīng)初始化的字段,或者是以@NonNull注解的未經(jīng)初始化的字段。

@RequiredArgsConstructor(staticName = “of”)會生成一個of()的靜態(tài)方法,并把構(gòu)造方法設(shè)置為私有的

@AllArgsConstructor

生成一個全參數(shù)的構(gòu)造方法

@ToString

生成toString()方法,默認情況下它會按順序(以逗號分隔)打印你的類名稱以及每個字段??梢赃@樣設(shè)置不包含哪些字段,可以指定一個也可以指定多個@ToString(exclude = “id”) / @ToString(exclude = {“id”,”name”}) 。如果繼承的有父類的話,可以設(shè)置callSuper 讓其調(diào)用父類的toString()方法,例如:@ToString(callSuper = true)

@EqualsAndHashCode

生成hashCode()和equals()方法,默認情況下,它將使用所有非靜態(tài),非transient字段。但可以通過在可選的exclude參數(shù)中來排除更多字段?;蛘?,通過在of參數(shù)中命名它們來準(zhǔn)確指定希望使用哪些字段。

// exclude 排除字段 
@EqualsAndHashCode(exclude = {“password”, “salt”})
// of 指定要包含的字段 
@EqualsAndHashCode(of = {“id”, “phone”, “password”})

@Data

@Data 包含了 @ToString、@EqualsAndHashCode、@Getter / @Setter和@RequiredArgsConstructor的功能

@Value

@Value 將字段都變成不可變類型:使用final修飾, 同時還包含@ToString、@EqualsAndHashCode、

@AllArgsConstructor 、@Getter(注意只有Getter沒有Setter)

@Log

生成log對象,用于記錄日志,可以通過topic屬性來設(shè)置getLogger(String name)方法的參數(shù) 例如 @Log4j(topic = “com.xxx.service.xxx”),默認是類的全限定名,即 類名.class,log支持以下幾種:

  • @Log java.util.logging.Logger
  • @Log4j org.apache.log4j.Logger
  • @Log4j2 org.apache.logging.log4j.Logger
  • @Slf4j org.slf4j.Logger
  • @XSlf4j org.slf4j.ext.XLogger
  • @CommonsLog org.apache.commons.logging.Log
  • @JBossLog org.jboss.logging.Logger
@Log
private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());
@Log4j
private static final Logger log = org.apache.log4j.Logger.Logger.getLogger(UserService.class);
@Log4j2
private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);
@Slf4j
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
@XSlf4j
private static final org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);
@CommonsLog
private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);
@JBossLog
private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LogExample.class);

@SneakyThrows

使用try catch 修飾方法,來捕獲異常, 默認捕獲的是Throwable異常,也可以設(shè)置要捕獲的異常:@SneakyThrows(InterruptedException.class)

@Synchronized

給方法加上同步鎖

@Cleanup

主要用來修飾 IO 流相關(guān)類, 會在 finally 代碼塊中對該資源進行 close();

@Getter(lazy = true)

標(biāo)注字段為懶加載字段,懶加載字段在創(chuàng)建對象時不會進行初始化,而是在第一次訪問的時候才會初始化,后面再次訪問也不會重復(fù)初始化

@Wither

提供了給final字段賦值的一種方法

@Builder

為你的類生成復(fù)雜的構(gòu)建器API。

@Delegate

為List類型的字段生成一大堆常用的方法,其實這些方法都是List中的方法 。注意:一個類中只能使用一個@Delegate注解,因為使用多個會生成多個size()方法,從而會編譯報錯。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaWeb踩坑記錄之項目訪問不到html文件

    JavaWeb踩坑記錄之項目訪問不到html文件

    這篇文章主要給大家介紹了關(guān)于JavaWeb踩坑記錄之項目訪問不到html文件的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用JavaWeb具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-03-03
  • VScode+Java配置與使用的詳細步驟

    VScode+Java配置與使用的詳細步驟

    這篇文章主要介紹了VS code+Java配置與使用的詳細步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • Springboot RestTemplate設(shè)置超時時間的方法(Spring boot 版本)

    Springboot RestTemplate設(shè)置超時時間的方法(Spring boot 

    這篇文章主要介紹了Springboot RestTemplate設(shè)置超時時間的方法,包括Spring boot 版本<=1.3和Spring boot 版本>=1.4,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • 淺談JAVA 責(zé)任鏈模式

    淺談JAVA 責(zé)任鏈模式

    這篇文章主要介紹了JAVA 責(zé)任鏈模式的的相關(guān)資料,文中講解非常細致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • Nacos注冊中心的幾種調(diào)用方式詳解

    Nacos注冊中心的幾種調(diào)用方式詳解

    Spring Cloud Alibaba Nacos 作為近幾年最熱門的注冊中心和配置中心,也被國內(nèi)無數(shù)公司所使用,本文就來看下 Nacos 作為注冊中心時,調(diào)用它的接口有幾種方式
    2023-10-10
  • Collections工具類_動力節(jié)點Java學(xué)院整理

    Collections工具類_動力節(jié)點Java學(xué)院整理

    Collections工具類提供了大量針對Collection/Map的操作。這篇文章主要介紹了Collections工具類_動力節(jié)點Java學(xué)院整理,需要的朋友可以參考下
    2017-04-04
  • maven無法依賴spring-cloud-stater-zipkin的解決方案

    maven無法依賴spring-cloud-stater-zipkin的解決方案

    這篇文章主要介紹了maven無法依賴spring-cloud-stater-zipkin如何解決,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • SpringMVC集成Swagger實例代碼

    SpringMVC集成Swagger實例代碼

    本篇文章主要介紹了SpringMVC集成Swagger實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • 聊聊springboot?整合?hbase的問題

    聊聊springboot?整合?hbase的問題

    這篇文章主要介紹了springboot?整合?hbase的問題,文中給大家提到配置linux服務(wù)器hosts及配置window?hosts的相關(guān)知識,需要的朋友可以參考下
    2021-11-11
  • Spring Boot實戰(zhàn)之逐行釋義Hello World程序

    Spring Boot實戰(zhàn)之逐行釋義Hello World程序

    spring boot 是基于Spring的一個框架,Spring boot幫我們集成很多常用的功能,使得整個配置更加簡單。這篇文章主要介紹了Spring Boot實戰(zhàn)之逐行釋義Hello World,需要的朋友可以參考下
    2017-12-12

最新評論