springboot整合lombok及常见问题怎么解决-mile米乐体育
springboot整合lombok及常见问题怎么解决
这篇文章主要介绍“springboot整合lombok及常见问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot整合lombok及常见问题怎么解决”文章能帮助大家解决问题。
lombok
lombok能以简单的注解形式来简化java代码,从而提高开发人员的开发效率。其本身是一个优秀的java代码库,它采用了一种投机取巧的语法糖,简化了java的编码,为java代码的精简提供了一种方式,但lombok并非一个标准的java库。
在web开发过程中经常需要写的java类,都需要花时间去添加相应的getter/setter、构造器和equals等方法。当属性多时会出现大量的getter/setter方法,这些显得很冗长也没有太多技术含量,一旦修改属性,容易出现忘记修改对应方法的情况。
官方网站:project lombok
1. lombok常用注解
注解 | 作用 |
---|---|
@data | 注解在类上;提供类所有属性的 getting 和 setting 方法,还提供了equals、canequal、hashcode、tostring 方法 |
@setter | 注解在属性上;为属性提供 setting 方法 |
@setter | 注解在属性上;为属性提供 getting 方法 |
@log4j | 注解在类上;为类提供一个 属性名为log 的 log4j 日志对象 |
@noargsconstructor | 注解在类上;为类提供一个无参的构造方法 |
@allargsconstructor | 注解在类上;为类提供一个全参的构造方法 |
@cleanup : | 关闭流 |
@builder | 被注解的类增加构造者模式 |
@synchronized | 同步锁 |
@sneakythrows | 捕获异常,类似try/catch 捕获异常 |
@nonnull | 给参数加个这个注解,当参数为null会抛出空指针异常 |
@value | 注解和@data类似,默认定义所有成员变量为private final修饰,不生成set方法 |
2. lombok注解失效原因
在pom.xml引入lombok依赖后,还需要安装lombok插件,重启idea才能生效。
整合过程
1. 引入lombok依赖:
复制如下代码并插入pom.xml当中,等待maven仓库自动下载安装依赖,没有设置自动导包点击手动导入。
2. 安装lombok插件
在idea中点击file-》setting-》plugins-》搜索lombok安装插件后,重启idea;
3. 利用lombok为属性生成getter/setter等方法程序代码示例
a.未使用lombok编写实体类(程序肥胖、不好看)
使用ide自带的快捷键能自动生成getter/setter这些方法:
packagecom.dvms.entity;/**文件名:anglerecord*创建者:cjw*创建时间:2020/6/614:40*描述:记录*/publicclassrecord{privatestringtime;privatestringdevice;privatestringstate;publicrecord(stringtime,stringdevice,stringstate){this.time=time;this.device=device;this.state=state;}publicrecord(){}publicstringgettime(){returnthis.time;}publicstringgetdevice(){returnthis.device;}publicstringgetstate(){returnthis.state;}publicrecordsettime(stringtime){this.time=time;returnthis;}publicrecordsetdevice(stringdevice){this.device=device;returnthis;}publicrecordsetstate(stringstate){this.state=state;returnthis;}publicbooleanequals(finalobjecto){if(o==this)returntrue;if(!(oinstanceofrecord))returnfalse;finalrecordother=(record)o;if(!other.canequal((object)this))returnfalse;finalobjectthis$time=this.gettime();finalobjectother$time=other.gettime();if(this$time==null?other$time!=null:!this$time.equals(other$time))returnfalse;finalobjectthis$device=this.getdevice();finalobjectother$device=other.getdevice();if(this$device==null?other$device!=null:!this$device.equals(other$device))returnfalse;finalobjectthis$state=this.getstate();finalobjectother$state=other.getstate();if(this$state==null?other$state!=null:!this$state.equals(other$state))returnfalse;returntrue;}protectedbooleancanequal(finalobjectother){returnotherinstanceofrecord;}publicinthashcode(){finalintprime=59;intresult=1;finalobject$time=this.gettime();result=result*prime ($time==null?43:$time.hashcode());finalobject$device=this.getdevice();result=result*prime ($device==null?43:$device.hashcode());finalobject$state=this.getstate();result=result*prime ($state==null?43:$state.hashcode());returnresult;}publicstringtostring(){return"record(time=" this.gettime() ",device=" this.getdevice() ",state=" this.getstate() ")";}}
b.引入lombok生成方法(程序苗条、看着很舒服)
可自己根据需求手动增添注解,也可以通过右键-》refactor-》lomok-》
packagecom.dvms.entity;/**文件名:anglerecord*创建者:cjw*创建时间:2020/6/614:40*描述:记录*/importlombok.allargsconstructor;importlombok.data;importlombok.noargsconstructor;importlombok.tostring;importlombok.experimental.accessors;@data@tostring@allargsconstructor@noargsconstructor@accessors(chain=true)//链式调用publicclassrecord{privatestringtime;privatestringdevice;privatestringstate;}
优点与缺点(可能出现的问题即解决方法)
优点:
lombok能通过注解的方式,在编译时自动为属性生成getter/setter、equals和tostring等方法,省去了手动重建这些代码的麻烦,使程序实体类(entity/pojo)代码看起来更‘苗条’、更有逼格。
缺点(可能出现的问题):
如果是个人开发,可能出现如下问题:
1.lombok目前支持jdk1.8,升级jdk版本后可能失效,解决方法:
a.通过ide自带的快捷键alt insert生成getter/setter,equals,hashcode,tostring以及构造器等方法;
b.使用delombok工具生成上述这些方法,在最新版本中已包含delombok。右键选择refactored->delombok:
或者使用一个命令:
java-jarlombok.jardelomboksrc-dsrc-delomboked
把 lombok 注解实现的类文件转换为不使用 lombok 的 java 源文件。
2.lombok隐藏了javabean封装的细节,程序看着简洁但是可读性差。此外尽量不要使用使用这个注解@allargsconstructor,该注解提供一个巨型构造器,使外界有机会在初始化对象时修改类中所有的属性是非常不安全的,毕竟java类中对象的某些属性不应被修改。同时,如果某个java类中有好多个属性,那么lombok会注入好多个参数的构造器到java类中,而构造器参数的顺序完全由lombok所控制。
3.使用lombok来编写javabean代码后,其余依赖此javabean的其他代码都需要引入lombok依赖,代码耦合度上升。同时,还需要在ide中安装lombok的插件。
4.如果是协同开发,则需要注意如下问题:
当我们的程序代码中引入了lombok插件,其他人也必须去下载、引入lombok插件,否则java代码可能无法正常运行。
关于“springboot整合lombok及常见问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注恰卡编程网行业资讯频道,小编每天都会为大家更新不同的知识点。