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

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

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

前言

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

如何在IntelliJ IDEA中引入Lombok

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

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

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

Lombok注解用途

@Getter/@Setter

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

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

@NonNull

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

@NoArgsConstructor

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

@RequiredArgsConstructor

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

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

@AllArgsConstructor

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

@ToString

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

@EqualsAndHashCode

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

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

@Data

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

@Value

@Value 將字段都變成不可變類(lèi)型:使用final修飾, 同時(shí)還包含@ToString、@EqualsAndHashCode、

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

@Log

生成log對(duì)象,用于記錄日志,可以通過(guò)topic屬性來(lái)設(shè)置getLogger(String name)方法的參數(shù) 例如 @Log4j(topic = “com.xxx.service.xxx”),默認(rèn)是類(lèi)的全限定名,即 類(lèi)名.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 修飾方法,來(lái)捕獲異常, 默認(rèn)捕獲的是Throwable異常,也可以設(shè)置要捕獲的異常:@SneakyThrows(InterruptedException.class)

@Synchronized

給方法加上同步鎖

@Cleanup

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

@Getter(lazy = true)

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

@Wither

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

@Builder

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

@Delegate

為L(zhǎng)ist類(lèi)型的字段生成一大堆常用的方法,其實(shí)這些方法都是List中的方法 。注意:一個(gè)類(lèi)中只能使用一個(gè)@Delegate注解,因?yàn)槭褂枚鄠€(gè)會(huì)生成多個(gè)size()方法,從而會(huì)編譯報(bào)錯(cuò)。

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

相關(guān)文章

  • JavaWeb踩坑記錄之項(xiàng)目訪問(wèn)不到html文件

    JavaWeb踩坑記錄之項(xiàng)目訪問(wèn)不到html文件

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

    VScode+Java配置與使用的詳細(xì)步驟

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

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

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

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

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

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

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

    Collections工具類(lèi)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

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

    maven無(wú)法依賴(lài)spring-cloud-stater-zipkin的解決方案

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

    SpringMVC集成Swagger實(shí)例代碼

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

    聊聊springboot?整合?hbase的問(wèn)題

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

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

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

最新評(píng)論