SpringBoot | 第二章:lombok 介绍及简单使用

Eclipse中Springboot项目使用Lombok教程 Eclipse中Springboot项目使用Lombok教程,包含了lombok常见的注解使用方法,包括@Getter、@Setter、@NoArgsConstructor、@AllArgsConstructor、@RequiredArgsConstructor、@Builder、@Data、@Value、@Slf4j、@Cleanup等注解,可以大大减少代码的书写,使代码的可读性及可维护性更好 阅读详情

为何要使用Lombok

我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性的构造器、getter、setter、equals、hashcode、toString方法,当要增加属性或者对某个属性进行改变时,比如命名、类型等,都需要重新去生成上面提到的这些方法。这样重复的劳动没有任何意义,Lombok里面的注解可以轻松解决这些问题。

简化冗余的JavaBean代码,使得实体文件很简洁。

大大提高JavaBean中方法的执行效率,省去重复的步骤

Lombok简介

Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。

官方地址:https://projectlombok.org/ github地址:https://github.com/rzwitserloot/lombok

官网对其解释为:

13467292-282ab2f569a565bb

这里简单说下lombok实现的原理:主要是通过抽象语法树(AST),在编译处理后,匹配到有其注解的类,那么注解编译器就会自动去匹配项目中的注解对应到在lombok语法树中的注解文件,并经过自动编译匹配来生成对应类中的getter或者setter方法,达到简化代码的目的。

利用此原理,也可自行编写一些工作中一些经常使用到的,比如实体类转Map对象,map对象转实体类,原本使用Beanutils或者cglib的BeanCopier实现转换,前者使用的是反射的机制,所以性能相对较差,后者是使用修改字节码技术,性能在未使用Converter时基本等同于set和get方法。但说白了还是麻烦,毕竟还需要缓存对象等做到复用等。而使用lombok的形式的话,一切都是自动的,性能基本是没有损失的,由于对AST不熟悉,之后有时间了可以进行插件编写下(去官网提过这个问题,官方回复说,不太符合lombok的使用场景,⊙﹏⊙‖∣,还是自己动手,风衣足食吧~)

eclipse 安装

下载 lombok.jar 包

运行lombok.jar包,会自动扫描系统的ide安装情况(或者手动指定目录),点击Install/Update,即可。

13467292-12c6a39d5f74b2e7

不运行jar包情况下,可直接指定eclipse.ini文件,设置javaagent属性即可(第二种方法最后的效果也是这样的。):

13467292-259bbca89d0be0da

Lombok使用

添加maven依赖

org.projectlombok

lombok

1.16.20

常用注解介绍

@Getter / @Setter:可以作用在类上和属性上,放在类上,会对所有的非静态(non-static)属性生成Getter/Setter方法,放在属性上,会对该属性生成Getter/Setter方法。并可以指定Getter/Setter方法的访问级别。

@EqualsAndHashCode :默认情况下,会使用所有非瞬态(non-transient)和非静态(non-static)字段来生成equals和hascode方法,也可以指定具体使用哪些属性。 @ToString 生成toString方法,默认情况下,会输出类名、所有属性,属性会按照顺序输出,以逗号分割。

@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor:无参构造器、部分参数构造器、全参构造器

** @Data:包含@ToString, @EqualsAndHashCode, 所有属性的@Getter, 所有non-final属性的@Setter和@RequiredArgsConstructor的组合,通常情况下,基本上使用这个注解就足够了。**

@Budilder:可以进行Builder方式初始化。

@Slf4j:等同于:private final Logger logger = LoggerFactory.getLogger(XXX.class);简直不能更爽了!一般上用在其他java类上

更多注解说明,可查看:https://projectlombok.org/features/index.html

简单使用示例

使用lombok

@Data

@Builder

@NoArgsConstructor

@AllArgsConstructor

public class Demo {

String code;

String name;

}

等同于

public class Demo {

String code;

String name;

public static DemoBuilder builder() {

return new DemoBuilder();

}

public String getCode() {

return this.code;

}

public String getName() {

return this.name;

}

public void setCode(String code) {

this.code = code;

}

public void setName(String name) {

this.name = name;

}

public boolean equals(Object o) {

if (o == this)

return true;

if (!(o instanceof Demo))

return false;

Demo other = (Demo) o;

if (!other.canEqual(this))

return false;

Object this$code = getCode();

Object other$code = other.getCode();

if (this$code == null ? other$code != null : !this$code.equals(other$code))

return false;

Object this$name = getName();

Object other$name = other.getName();

return this$name == null ? other$name == null : this$name.equals(other$name);

}

protected boolean canEqual(Object other) {

return other instanceof Demo;

}

public int hashCode() {

int PRIME = 59;

int result = 1;

Object $code = getCode();

result = result * 59 + ($code == null ? 43 : $code.hashCode());

Object $name = getName();

return result * 59 + ($name == null ? 43 : $name.hashCode());

}

public String toString() {

return "Demo(code=" + getCode() + ", name=" + getName() + ")";

}

public Demo() {

}

public Demo(String code, String name) {

this.code = code;

this.name = name;

}

public static class DemoBuilder {

private String code;

private String name;

public DemoBuilder code(String code) {

this.code = code;

return this;

}

public DemoBuilder name(String name) {

this.name = name;

return this;

}

public Demo build() {

return new Demo(this.code, this.name);

}

public String toString() {

return "Demo.DemoBuilder(code=" + this.code + ", name=" + this.name + ")";

}

}

}

使用@Slf4j(摘抄至官网)

@Slf4j

public class LogExampleOther {

public static void main(String... args) {

log.error("Something else is wrong here");

}

}

常规的

public class LogExampleOther {

private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExampleOther.class);

public static void main(String... args) {

log.error("Something else is wrong here");

}

}

省了多少事!!!少年快使用吧!

SpringBoot使用Lombok Lombok,一个Java类库,提供了一组注解,简化POJO实体类开发。 阅读详情

相关推荐

【SpringBoot】11、SpringBoot中集成Lombok的各种使用技巧

未使用 lombok 的时候,我们还在写着 getter、setter、toString 方法的冗余代码,这些代码毫无技术含量可言,非常影响美观,于是我们开始使用 lombok 1、引入 lombok 依赖 <!-- lombok插件 --> <dependency> <groupId>org.projectlombok</groupId> ...

JACKAL 20万+

Spring Boot的Lombok详解

Lombok是一个Java库,旨在通过自动生成样板代码来减少开发人员需要编写的冗余代码,从而提高代码的可读性和简洁性。它通过注解的方式,让开发人员能够在编写代码时自动产生一些常见的方法和字段,如getter、setter、构造函数、equalshashCode等,从而简化了Java类的创建和维护。Lombok使得你可以在代码中专注于核心逻辑,而不必担心冗长的样板代码。Lombok大大简化了Java开发过程中的样板代码编写,使开发人员能够专注于核心逻辑,提高代码的可维护性和可读性。

rm -rf/坏习惯 1919

保姆级教程如何进行本地局域网布署openclaw小龙虾

全网唯一一篇一步步实战教程,图文并茂方式的方式教你如何本地部署安装小龙虾openclaw

zzw17wei的专栏 1468

【SpringBoot-3】Lombok使用详解

Lombok使用详解Lombok简介Lombok安装Lombak使用@Data@Setter&@Getter@Builder@NonNull@Log4j@AllArgsConstructor@NoArgsConstructor@EqualsAndHashCode@RequiredArgsConstructor@Cleanup@ToString@Value@SneakyThrows@Sync...

云深不知处 6901

Geant4 案例分析(一): B1

本文是对Geant4 B1的案例分析,其中特定的功能不做介绍,而注重于各个文件的主要功能,以及它们组织的方式。

m0_51809467的博客 1583

【深度学习时间序列预测案例】零基础入门经典深度学习时间序列预测项目实战(附代码+数据集+原理介绍)

本专栏整理了《深度学习时间序列预测案例》,内包含了各种不同的基于深度学习模型的时间序列预测方法,例如LSTM、GRU、CNN(一维卷积、二维卷积)、LSTM-CNN、BiLSTM、Self-Attention、LSTM-Attention、Transformer等经典模型,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。

优快云 精品推荐 4万+

十分钟搞懂Lombok使用与原理

1 简介 Lombok是一款好用顺手的工具,就像Google Guava一样,在此予以强烈推荐,每一个Java工程师都应该使用它。Lombok是一种Java™实用工具,可用来帮助开发人员消除Java的冗长代码,尤其是对于简单的Java对象(POJO)。它通过注释实现这一目的。通过在开发环境中实现Lombok,开发人员可以节省构建诸如hashCode()和equals()这样的方法以及以往用来分类各...

weixin_33824363的博客 344

玩转大语言模型——使用华为官方MindIE-Server镜像方式部署DeepSeek模型

本文将详细介绍在国产Linux系统欧拉中使用华为官方MindIE-Server镜像方式部署DeepSeek模型。一般情况下华为昇腾800I服务器可以推理DeepSeek-R1-70B,4张300I-Duo服务器可以推理DeepSeek-R1-32B。在配置中尽量贴合官方文档,包含用到的一些其他的技术细节,便于零基础入门使用。

艾醒的博客 1290

SpringBoot中的Lombok

Lombok是什么 官方网站传送门 Lombok想要解决了的是在我们实体Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不会用到,但是某些时候仍然需要复写,以期方便使用的方法;在使用Lombok之后,将由其来自动帮你实现代码生成,注意,其是 在运行过程中,帮你自动生成的 。就是说,将极大减少你的代码总量。 Lombok有什么作用 简化冗余的Ja...

好巧~我看到你了 477

【主题建模】一种基于深度学习的主题建模方法:BERTopic(实战篇)

BERTopic 是基于深度学习的一种主题建模方法。2018 年底,Devlin et al. 提出了 Bidirectional Encoder Representations from Transformers (BERT)。BERT 是一种用于 NLP 的预训练策略,它成功地利用了句子的深层语义信息。

Data · Model · Agent · Repeat 2万+

基于YOLO-world训练模型的完整教程:从数据准备到微调训练

本文提供了YOLO-world模型训练的完整教程,涵盖从环境配置到微调训练的全流程。首先介绍了YOLO-world项目的安装与配置步骤,包括依赖安装和CUDA环境设置;接着详细说明了数据集的准备方法,包括COCO格式数据集的组织结构和自定义数据集的类别定义;然后阐述了配置文件的修改要点,包括超参数调整和数据集路径设置;最后讲解了训练命令的使用方法及常见问题的解决方案。本教程旨在帮助读者快速掌握YOLO-world模型的训练技能,适用于计算机视觉领域的研究人员和开发者。

FJN110的博客 1108

lombok @data 忽略属性_SpringBoot|第二章:lombok 介绍及简单使用

为何要使用Lombok我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性的构造器、getter、setter、equals、hashcode、toString方法,当要增加属性或者对某个属性进行改变时,比如命名、类型等,都需要重新去生成上面提到的这些方法。这样重复的劳动没有任何意义,Lombok里面的注解可以轻松解决这些问题。简化冗余的JavaBean代码,使得实体文...

weixin_39905816的博客 643

【光伏风电功率预测】基于 ICEEMDAN + MSCNN-BiGRU-Attention 的并行预测模型

本文提出一种基于ICEEMDAN分解与多尺度深度学习的光伏/风电功率并行预测框架。针对多能源、多时间尺度、强非平稳特性带来的建模挑战,该模型首先通过改进的ICEEMDAN算法将原始功率序列分解为不同频段的IMF分量;随后为每个IMF构建包含多尺度CNN、双向GRU和注意力机制的子模型,实现局部特征提取与时序依赖建模;最后通过并行预测与重构获得最终功率输出。实验表明,该方法能有效解决模式混叠问题,提升预测精度,并支持光伏/风电的独立或联合预测部署,适用于风光联合调度等工程场景。

专注AI大模型,软件混淆,授权 155

SpringBoot | 第二章:lombok介绍及简单使用

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34238642的博客 170

抖音中动态生成msToken的方法

抖音中动态生成msToken的方法

sh_moranliunian的博客 2487

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

lombok null字段不显示 继承_SpringBoot|第二章:lombok 介绍及简单使用

为何要使用Lombok我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性的构造器、getter、setter、equals、hashcode、toString方法,当要增加属性或者对某个属性进行改变时,比如命名、类型等,都需要重新去生成上面提到的这些方法。这样重复的劳动没有任何意义,Lombok里面的注解可以轻松解决这些问题。简化冗余的JavaBean代码,使得实体文...

weixin_35795792的博客 148

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

SpringBoot 使用Lombok插件

一、Lombok简介 Lombok 是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具,在我们项目开发中经常使用model,entity等类,绝大部分数据类类中都需要get、set、toString等方法,一般我们需要手动的添加这些属性, 但是如果我们受到业务的变更,字段的添加,修改等操作,我们需要更改实体类,但是使用了Lombok插件,...

Charge8的博客 5821

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SpringBoot——lombok依赖的具体使用以及问题

SpringBoot——lombok依赖包

weixin_42924812的博客 3万+

SpringBoot - Lombok使用详解

SpringBoot - Lombok使用详解 我们创建 POJO 类时,经常需要先写属性,然后手写或者自动生成 get 和 set 方法,然后还要重写 toString 方法…一系列操作下来,这个 POJO 类便会产生太多的样板式代码。 ​ 这种传统的方式不仅使得代码十分臃肿,有时也不方便维护,比如:当变量名或者是修饰符改变了,我们就要删除 set、get 方法重新生成。 ​ 而 Lombok 出现就是为了解决代码书写的冗余问题,下面对其进行详细进行介绍。 一、基本介绍 1,Lombok 介绍

鱼的博客 1832

SpringBoot中lombok的 使用

介绍 Spring Boot是非常高效的开发框架,lombok是一套代码模板解决方案,将极大提升开发的效率,这里介绍给大家使用。 Lombok想要解决了的是在我们实体Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不会用到,但是某些时候仍然需要复写,以期方便使用的方法;在使用Lombok之后,将由其来自动帮你实现代码生成,注意,其是在运行过程中,帮...

feritylamb的博客 1177

Lombok介绍

本文简单介绍了Lombok的使用

m0_48944689的博客 2222
上一篇: SpringBoot|第一章:第一个SpringBoot 应用
下一篇: SpringBoot|第三章:springboot配置详解
普通网友
博客等级 码龄8年 55粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值