连技术大拿都偷偷在用的偷懒神器Lombok

记得刚毕业做研发时旁边坐的是个浙大的技术大牛,上班大部分的时间都是在看技术博客,研究新技术,但是交给他的任务又都是提前完成的。很幸运的是跟他成为了饭友,一起吃饭的路上就会像个徒弟一样,听他说今天又研究出了一个新技术,或者是今天用一个算法解决了一个难题,老实说刚毕业的我没听懂那些深奥的东西。不过印象比较深刻的是,他从来不用复杂的代码解决简单的问题,所以他做出来的功能很少出现BUG,同时他也有更多的时间去充电自己(现在已经是一位资深的TL了)。
当然这个Lombok插件不是那位大牛告诉我(我刚毕业那会儿还没有spring boot,就是简单的spring MVC),后面微服务盛行自己在学习spring boot框架的时候偶然间看到的,后来发现公司里有一些技术比较牛逼的同事也在用,想必应该是一个好家伙
在这里插入图片描述

什么是Lombok?
Lombok以简单的注解形式来简化java代码,减少冗余,提高开发人员的开发效率。例如开发中创建javabean,需要添加相应的getter/setter、构造器、equals等方法,而且当属性过多时会出现大量的getter/setter方法。通过Lombok注解的方式,在编译时自动为属性生成getter/setter、构造器、equals等方法,这样代码看起来非常简洁,瞬间提高程序员level +n次方有木有!!!接下来一探究竟如何:
一、插件安装
有两种方式:
1、IDEA的官方插件仓库和GitHub里lombok-intellij-plugin仓库中的release包;
2、2、通过插件库下载安装
因为第一种要考虑版本冲突的问题,所以就直接介绍第二种方式
在这里插入图片描述
可能会有人遇到下面的情况,花少在度娘上找了一百种方法都没搞定(包括还用第一种方式,页面都打不开),后来发现是网络的问题,把无线改成有线就OK了
在这里插入图片描述

二、Maven依赖

org.projectlombok lombok provided

三、注释解释(篇幅原因,实例就不具体写了,大家网上度一下或者靠意想吧)
1、@Data
注解在类上,会为类的所有属性自动生成getter/setter、toString、equals、hashCode方法。如果为final属性,则不会为该属性生成setter方法。其实@Data相当于@Getter、@Setter、@RequiredArgsConstructor、@ToString和@EqualsAndHashCode的集合
2、@Getter / @Setter
可以注解在类和属性上。注解在类上,会为类的所有属性生成getter方法,会为类的所有非final属性生成setter方法。注解在属性上,可以为当前属性生成getter/setter方法
3、@EqualsAndHashCode
注解在类上,默认会使用非静态(non-static)和非瞬态(non-transient)属性来生成equals、canEqual和hashCode方法,也能通过exclude注解来排除一些属性
4、@ToString
注解在类上,会为类的生成toString方法。默认会输出类名、所有属性(按照属性定义顺序),用逗号分隔。通过将includeFieldNames参数设为true,就能同时输出属性名
5、@NoArgsConstructor / @RequiredArgsConstructor / @AllArgsConstructor
注解在类上,会为类的生成无参构造器、部分参数构造器、全参构造器。Lombok没法实现多种参数构造器的重载
6、@NonNull
注解在属性、方法或构造器上,Lombok会生成一个空检查语句
7、@Cleanup
注解在本地变量中,可以确保在代码执行路径退出当前范围之前自动清理给定资源
8、@Log
注解在类上,Lombok会为当前类生成日志记录器,名为log

四、优缺点
1、优点:
能够通过注解的方式减少代码编写,提高了开发效率;
让代码变得简洁,不用过多的去关注相应的方法;
属性做修改时,不需要为这些属性重新生成新的方法等
2、缺点:
需要安装插件
不支持多种参数构造器的重载

当然每个程序员都会有自己的习惯,并不是说会用这些工具就是技术大拿,所谓的技术大拿不过是更加了解技术的本质,敢于去尝试更多前沿的技术以及攻克更多的难题。举个很简单的例子,JAVA面对对象中最简单的继承、封装、多态,很多程序员也能难在自己的代码中运用贯通
在这里插入图片描述

花有重开日,人无再少年 → 我是花少【少宫主花无缺】#更新不断,创作不易#走过路过不不白piao,留下关注和点赞(公众号同名)@all