eclipse安装lombok插件(lombok常用注解的介绍与区别)arydon

Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类。(百度百科)

简单来说,比如我们新建了一个类,然后在其中写了几个字段,然后通常情况下我们需要手动去建立getter和setter方法啊,构造函数啊之类的,lombok的作用就是为了省去我们手动创建这些代码的麻烦,它能够在我们编译源码的时候自动帮我们生成这些方法。

比方说,我把该jar包下载到了桌面上

第二步:打开黑窗口

win+r--》cmd--》打开黑窗口--》切换到该jar包所在的上级目录

此时,正在寻找开发工具IDE的安装路径,找到后会出现如下界面

当然,如果找的不对的话,或者你想切换成其它IDE,点击“Specify location...”,手动指定也是可以哒。

第四步:安装lombok

点击上图右下角的Install/Update;

这不是手动加上的,而是第四步安装后自动加上的。

点击Quit Installer,完成安装

第五步:测试

重启eclipse;

保存,Alt+F5--》更新maven项目;

打开设置项,找到"Plugins";

搜索:lombok,进行安装即可。

右侧有关于当前版本支持的注解明细及用法。

@Setter :注解在类或字段,注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法。

@Getter :使用方法同上,区别在于生成的是getter方法。

@Getter(lazy=true) :实际使用到的时候生成。

@ToString :注解在类,为类提供toString方法。

@EqualsAndHashCode: 注解在类,生成hashCode()和equals()方法。

默认情况下,生成包含所有非静态、非transient 字段的 equals 和 hashCode 方法。

@NoArgsConstructor: 注解在类,生成无参的构造方法。

@RequiredArgsConstructor: 注解在类,为类中需要特殊处理的字段生成构造方法,比如被final修饰和被@NonNull注解修饰的字段。

当我们往类上添加此注解后,如果该类没有需要特殊处理的字段,该注解不会生成任何代码的。(即不会生成无参构造方法)。

我们可以使用它来完成spring对象的构造注入。

我们知道,spring注入对象有5种方式:

构造函数注入(Constructor Injection)

属性注入(Setter Injection)

字段注入(Field Injection)

方法注入(Method Injection)

配置类注入(Configuration Classes Injection)

先说字段注入。

如上图所示,我们现在需要注入6个spring管理的对象。

如果用构造函数注入的话,我们可以结合此注解来完成。

第一步,需要将被注入的对象用final修饰。

第二步,在类添加此注解。

当然,这不够标准,但不影响对象的注入。

标准的注解应该是:

@RequiredArgsConstructor(onConstructor = @__(@Autowired)):用于在类中生成一个带有@Autowired注解的构造函数。

以上的代码等价于:

@AllArgsConstructor: 注解在类,生成包含类中所有字段的构造方法。

@NoArgsConstructor(force = true): 注解在类,生成无参的构造方法,并将字段设置为 final。

@AllArgsConstructor: 注解在类,生成包含类中所有字段的构造方法,并将字段设置为 final。

生成包含父类字段的 equals 和 hashCode 方法。

@Data: 注解在类,生成setter/getter()、equals()、canEqual()、hashCode()、toString()方法,如为final属性,则不会为该属性生成setter方法。

相当于:@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode这5个注解的合集。

@Slf4j: 注解在类,生成log变量,严格意义来说是常量。

@Builder:注解在类、构造函数或方法上,生成builder()方法,根据该方法来完成对类的私有属性的取值和赋值工作,但是无法调取到自定义的方法。

注意:

当使用@Builder注解后,将无法通过new来创建对象。

因为此注解会将构造方法私有化。

具体报错信息如下:

仍然需要传统的构造函数,百度AI说可以考虑同时使用@RequiredArgsConstructor注解。

这样一来,虽然idea不报错了,但实际上在编译的时候,还是会报错的。

意思是:需要无参构造方法,但只找到了有参构造方法。

如果我们在使用@Builder注解的同时,仍然希望通过new来创建对象,我们需要添加两个注解@NoArgsConstructor和@AllArgsConstructor。

当使用 @Builder 注解生成构建器模式时,被该注解修饰的属性如果没有显式赋值,Lombok 会自动为其赋予指定的默认值。

如果在构建对象时没有为 qycfDetailsVoList 赋值,则使用 null 作为默认值。

@Accessors(chain = true):注解在类上,和@Builder搭配使用,如果只有此注解,没有@Builder的话,该注解将毫无意义,无法单独使用。

@NonNull:生成非空检查代码,可以帮助我们避免空指针;

注解在参数上, 如果该类参数为 null , 就会报出异常,  throw new NullPointException(参数名)

@Cleanup: 用在流上,流读取完毕后,会自动帮我们调用close()方法

注释在引用变量前, 自动回收资源。默认调用 close() 方法。

@Value:@Data类似,区别在于它会把所有成员变量默认定义为private final修饰,自动生成 getter 方法(不会生成set方法)。

@Synchronized: 注解在方法上, 为方法提供同步锁。

@Log4j: 注解在类上, 为类提供一个属性名为 log 的 log4j 的日志对象。

@Slf4j: 注解在类上, 为类提供一个属性名为 log 的 log4j 的日志对象。

搞不明白的可以自己写一个例子,然后用反编译文件看看到底注解转换成了什么样的代码。

该注解的作用是:为类的指定属性增加默认值(即:完成初始化)。

说明:当项目当中存在两个以上的@Default注解时,我们需要注意,使用的是:lombok的@Default注解。

这样的数据,在返回前端(进行序列化)时,没有进行初始化的属性值,也就成了null。

如果想返回空字符串,需要我们手动将属性值赋空字符""。

或者,使用lombok的@Default注解,并将属性的默认值为空字符""。

在方法体中自动捕捉并重新抛出异常,无需显式地进行异常处理。

自动生成属性的不可变更新方法。

常见用法1

如果既想通过@Builder实例化对象,又想通过new来实例化对象,必须在类上声明两个关于构造函数的注解,即:

@NoArgsConstructor和@AllArgsConstructor;

常见用法2

如果只通过@Builder来实例化对象的话,不需要声明@NoArgsConstructor和@AllArgsConstructor;

常见用法3

如果只需要通过new来实例化对象的话,同样,也不需要声明@NoArgsConstructor和@AllArgsConstructor;

如何通过@Builder构造的对象,获取到变量的默认值?

通过对象拿到基本数据类型字段值,不是通过get()方法,而是直接调用:字段名称+();

当你所在的公司/团队禁止使用 Lombok 插件,只允许使用传统的方式来写get、set、toString这些基础方法,有没有方式能快速生成这些繁琐的体力活儿呢?IDEA 其实已经帮我们内置了快速生成这些方法的功能。

THE END
0.Java刷题———Java的零星使用(一)为什么不用变量也可以点方法在初识break和continue时,可能注意力主要关注于二者的区别上,所以焦点放在一个是“跳出循环”,一个是“执行下一轮循环”,这是“横向”对比。但是学习带label上,则要“纵向”对比:带label的和不带label的对比: 带label的break是直接跳出label循环 带label的continue是停止执行label循环后面代码,执行 jvzquC41dnuh0lxfp0tfv8UtqNgzojs1ctzjeuj1fgzbkux1::672:62
1.股票投资价值分析汇总十篇层次分析法(analytical hierarchy process,简称AHP法),由美国运筹学家Satty于20世纪70年代提出,是一种定性与定量分析相结合的多准则决策方法,具体分为五个步骤:根据总目标明确问题,分解问题并构建层次分析模型,根据隶属关系构造判断矩阵,层次单排序和层次总排序。运用AHP的关键是构造满意一致性矩阵,但由于人们主观意识对jvzquC41yy}/z~jujw4dqv3ep1nbq€jp166:3A3jvor
2.黄梅戏女驸马通用12篇应进一步加大黄梅戏艺术院团改革力度,加快改革管理体制,创新激活运行机制,尊重艺术发展规律,遵循市场经济规律,着力构建新型管理体制和运行机制,健全完善投入扶持、评价奖励等机制。从组织领导到政策措施,从人才培养到院团体制,从剧本创作到理论研究,从艺术生产到市场开拓,从精品攻关到普及推广,采取切实有效的措施和办法,充分jvzquC41yy}/z~jujw4dqv4jcq}fp86362:10qyon
3.javascript中面向对象的两种构建方式(构造函数)和(原型模式的区别)1、构造函数模式---》alert的结果为false <!DOCTYPE html>DocumentfunctionPerson(name,age,job){this.name=name;this.age=age;this.job=job;this.showname=function(){ alert(this.name); }this.showage=function(){ alert(this.age); }this.showjob=function(){ alert(this.job); } }vartom=newPersonjvzquC41yy}/ewgnqiy/exr1jq{{klmkiwueqwl1r1?12@7270nuou
4.吴迪陈耀东宅基地使用权信托制度构建三、宅基地信托模式的构造 宅基地信托流转目前在我国实务界还是一片空白,具体应如何设计相应的框架和制度,可以参考土地承包经营权信托的经验并做出适度调整。宅基地信托的过程中,宅基地所有权并不发生转移,而是形式上通过登记的方式发生转移。信托机构形式上获得宅基地的“所有权”外观,但宅基地作为信托财产,其所有权仍jvzquC41knrtu7lfwhy/gmz0ep5jpot132851:5;:34ivv
5::《法学研究》2021年第3期要目内容提要:域外管辖的理论构造和国内法域外适用的体系构建是我国当前面临的重大课题,其中关键之处是需对域外立法管辖和域外司法管辖作出恰当界分。无论对于域外立法管辖还是对于域外司法管辖,公法和私法的区分都构成了理论和实践展开的基础。各国立法管辖和司法管辖均不同程度地超越了属地原则。域外立法管辖的基本jvzq<84kqngx0lxup0io1stwtpgm1o}{l1814:571v814:5748e65<;4324tj}rn
6.Python创建二维数组与初始化的实践举例python2.1 利用list自身进行构造 list自身的构造函数形式多种多样。想构建一个二维数组自然并非难事。 例如,想要构建一个m行n列的二维数组。可以这样初始化。 1 L=[[]*n]*m 展示结果如下: 如果想要给一个初始化的值,可以写成: 1 L=[[0]*n]*m 则: jvzquC41yy}/lk:30pku1jwvkerf1;;;88>/j}r
7.日本“妖怪事件”的现代构建——基于《怪谈》和《化物语》的比较在这股文化热潮之下“妖怪”不再仅仅是“古老传说”的“再呈现”,而是以一种现代趣味进行了重新的构建。新的妖怪形象与传统妖怪到底有什么区别?这些区别又反映出在“话语”的背后,日本人的民族性格和对社会秩序的理解产生了怎样的变化呢?本篇文章试图从这两个问题入手,将小泉八云在《怪谈》中搜集的经典妖怪传说《jvzquC41oq|jg7iqwdgo0lto1tkwkn|1366659::1
8.双碳目标下转型金融驱动高耗能行业碳减排的机制及路径研究在联合国环境规划署所构建的可持续金融框架中,绿色金融与共同致力于减缓气候变化,服务于实现《巴黎协定》中所设定的减排目标。但转型金融与绿色金融间存在共同的目的与业务内容上的区别,从概念角度来说,绿色金融(GreenFinance)按照中国人民银行的说法:是指为支持环境改善、应对气候变化和资源节约高效利用的经济活动,即对jvzquC41|khp0myyy4dqv4oujyij87246711}7246714:;>:0jvs
9.【华泰金工林晓明团队】行业配置策略:趋势追踪视角——华泰基本面轮动系趋势追踪指标间的本质区别在于对历史价格的加权方式 不同趋势追踪指标的构建具有非常相似的逻辑,可以看成是对过去一段时间的资产价格或是收益率赋予不同的权重,并将过去加权的结果用于对未来的预测中。Ari Levine和Lasse Heje Pedersen在“Which Trend is Your Friend?”(2015)文中给出了趋势签名图(trend signature jvzq<84hkpgoen3ukpg/exr0ep5tvxhm1uzpetov1814922;/621mte/kowj~nrr3>6;?760unuou
10.Java设计模式二构建者模式本文介绍了构建者模式的基本概念,包括其角色定义、与工厂模式的区别,以及为何和何时使用构建者模式。并通过MyBatis框架中的具体应用案例,如MappedStatement和SqlSessionFactory的构建过程,进一步解析构建者模式的实际运用。 一、构建者模式: 1、介绍: 建造者模式的定义是:将一个复杂对象的构造与它的表示分离,使同样的构建jvzquC41dnuh0lxfp0tfv8YVFtkbo]Y1ctzjeuj1fgzbkux132?27<754