Lombok插件安装(IDEA)及配置jar包使用详解


Posted in Python onNovember 04, 2020

点击进入Lombok官网下载Lombok jar包

使用Lombok可能需要注意的地方

(1)、当你的IDE是Idea时,要注意你的Idea是支持Lombok的,如果不支持请更换高版本尝试(这里采用2018 3.3)。

(2)、在使用Lombok时,你的编辑器可能会报错,这时请在你的IDE中安装Lombok插件(如果使用的Idea则直接搜索Lombok插件,选择星级最高的,直接安装就是,其他Ide类同)。

(3)、参数的处理往往都是根据项目需求来进行,请妥善处理参数。

(4)、如果你无法访问Lombok官网,你可以从这篇博文中将Maven坐标照着自己打进去,或者你也可以访问Maven的中央仓库搜索Lombok,将Maven坐标复制进去即可。

1、Lombok简介

Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。例如开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器、equals等方法,而且需要维护,当属性多时会出现大量的getter/setter方法,这些显得很冗长也没有太多技术含量,一旦修改属性,就容易出现忘记修改对应方法的失误。

Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString等方法。出现的神奇就是在源码中没有getter和setter方法,但是在编译生成的字节码文件中有getter和setter方法。这样就省去了手动重建这些代码的麻烦,使代码看起来更简洁些。

使用Lombok的原因:

根据Lombok的使用规则,如果想要使用Lombok就需要删除在项目中(JavaBean)存在的已经生成的getter方法setter方法以及equals和hash方法,当然Lombok也提供了对打印日志的处理。这样在使用Lombok以后就会大大减少项目中的代码量,同时由于Lombok有自动修改的功能,这也提供了项目中代码的执行效率。

综上所述,使用Lombok的两点主要原因就是:

(1)、简化冗余的JavaBean代码。

(2)、大大提高JavaBean中方法的执行效率。

2、IDEA中安装Lombok插件

选择【File】-> 【Settings】->【Plugins】 ?> 输入Lombok,按回车键进行搜索,单击【Install】进行安装,安装完成后点击【Apply】和【OK】,然后重启IDEA即可安装成功。

注意:在重启前建议勾选结开启【Annotation Processors】下的【Enable annotation processing】(Ctrl+Shift+A键,输入Annotation Processors回车搜索即可找到该选项)。

Lombok插件安装(IDEA)及配置jar包使用详解

Lombok插件安装(IDEA)及配置jar包使用详解

3、使用LomBok

在Lombok的官网有一个install选项,我们点开它会看到多种安装方式,可以根据自己的项目需求来选择使用哪种方式,这里以Maven为例:

点击Maven会看到一组坐标:

Lombok插件安装(IDEA)及配置jar包使用详解

根据它的提示我们将这一组坐标添加到我们的pom文件中:

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

添加进去以后点击import change,等待Idea把jar包下载完就可以在项目中使用了。

4、Lombok常用注解详解

@Data注解:在JavaBean或类JavaBean中使用,这个注解包含范围最广,它包含getter、setter、NoArgsConstructor注解,即当使用当前注解时,会自动生成包含的所有方法;

@getter注解:在JavaBean或类JavaBean中使用,使用此注解会生成对应的getter方法;

@setter注解:在JavaBean或类JavaBean中使用,使用此注解会生成对应的setter方法;

@NoArgsConstructor注解:在JavaBean或类JavaBean中使用,使用此注解会生成对应的无参构造方法;

@AllArgsConstructor注解:在JavaBean或类JavaBean中使用,使用此注解会生成对应的有参构造方法;

@ToString注解:在JavaBean或类JavaBean中使用,使用此注解会自动重写对应的toStirng方法;

@EqualsAndHashCode注解:在JavaBean或类JavaBean中使用,使用此注解会自动重写对应的equals方法和hashCode方法;

@Slf4j:在需要打印日志的类中使用,当项目中使用了slf4j打印日志框架时使用该注解,会简化日志的打印流程,只需调用info方法即可;

@Log4j:在需要打印日志的类中使用,当项目中使用了log4j打印日志框架时使用该注解,会简化日志的打印流程,只需调用info方法即可;

在使用以上注解需要处理参数时,处理方法如下(以@ToString注解为例,其他注解同@ToString注解):

@ToString(exclude="column")

意义:排除column列所对应的元素,即在生成toString方法时不包含column参数;

@ToString(exclude={"column1","column2"})

意义:排除多个column列所对应的元素,其中间用英文状态下的逗号进行分割,即在生成toString方法时不包含多个column参数;

@ToString(of="column")

意义:只生成包含column列所对应的元素的参数的toString方法,即在生成toString方法时只包含column参数;;

@ToString(of={"column1","column2"})

意义:只生成包含多个column列所对应的元素的参数的toString方法,其中间用英文状态下的逗号进行分割,即在生成toString方法时只包含多个column参数;

5、示例代码(仅简单举一个使用例子)

不使用Lombok(传统方法)

package com.user;

public class UserInfo {

  private String userid;
  private String username;
  private String userpass;
  private String userphone;
  private String useremail;
  private String usercard;
  private String useraddress;

  @Override
  public String toString() {
    return "UserInfo{" +
        "userid='" + userid + '\'' +
        ", username='" + username + '\'' +
        ", userpass='" + userpass + '\'' +
        ", userphone='" + userphone + '\'' +
        ", useremail='" + useremail + '\'' +
        ", usercard='" + usercard + '\'' +
        ", useraddress='" + useraddress + '\'' +
        '}';
  }

  public String getUserid() {
    return userid;
  }

  public void setUserid(String userid) {
    this.userid = userid;
  }

  public String getUsername() {
    return username;
  }

  public void setUsername(String username) {
    this.username = username;
  }

  public String getUserpass() {
    return userpass;
  }

  public void setUserpass(String userpass) {
    this.userpass = userpass;
  }

  public String getUserphone() {
    return userphone;
  }

  public void setUserphone(String userphone) {
    this.userphone = userphone;
  }

  public String getUseremail() {
    return useremail;
  }

  public void setUseremail(String useremail) {
    this.useremail = useremail;
  }

  public String getUsercard() {
    return usercard;
  }

  public void setUsercard(String usercard) {
    this.usercard = usercard;
  }

  public String getUseraddress() {
    return useraddress;
  }

  public void setUseraddress(String useraddress) {
    this.useraddress = useraddress;
  }

}

使用Lombok

package com.user;

import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;

@Setter
@Getter
public class UserInfo {

  private String userid;
  private String username;
  private String userpass;
  private String userphone;
  private String useremail;
  private String usercard;
  private String useraddress;

}

只给单个参数添加

package com.user;

import lombok.Getter;
import lombok.Setter;

public class UserInfo {

  @Getter@Setter private String userid;
  private String username;
  private String userpass;
  private String userphone;
  private String useremail;
  private String usercard;
  private String useraddress;

}

到此这篇关于Lombok插件安装(IDEA)及配置jar包使用详解的文章就介绍到这了,更多相关Lombok插件安装使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现TCP/IP协议下的端口转发及重定向示例
Jun 14 Python
详解python中字典的循环遍历的两种方式
Feb 07 Python
Python学习pygal绘制线图代码分享
Dec 09 Python
Python实现文件信息进行合并实例代码
Jan 17 Python
对numpy 数组和矩阵的乘法的进一步理解
Apr 04 Python
解决pyttsx3无法封装的问题
Dec 24 Python
python Pandas库基础分析之时间序列的处理详解
Jul 13 Python
详解Python图像处理库Pillow常用使用方法
Sep 02 Python
让你的Python代码实现类型提示功能
Nov 19 Python
TensorFlow实现打印每一层的输出
Jan 21 Python
python判断两个序列的成员是否一样的实例代码
Mar 01 Python
python里反向传播算法详解
Nov 22 Python
基于OpenCV的路面质量检测的实现
Nov 04 #Python
Pycharm同步远程服务器调试的方法步骤
Nov 04 #Python
python归并排序算法过程实例讲解
Nov 04 #Python
Numpy数组的广播机制的实现
Nov 03 #Python
基于Python组装jmx并调用JMeter实现压力测试
Nov 03 #Python
Python os库常用操作代码汇总
Nov 03 #Python
如何基于Python爬虫爬取美团酒店信息
Nov 03 #Python
You might like
分页显示Oracle数据库记录的类之一
2006/10/09 PHP
PHP 实现多服务器共享 SESSION 数据
2009/08/15 PHP
php定时删除文件夹下文件(清理缓存文件)
2013/01/23 PHP
php读取mysql的简单实例
2014/01/15 PHP
ThinkPHP中的三大自动简介
2014/08/22 PHP
老生常谈PHP中的数据结构:DS扩展
2017/07/17 PHP
PDO::getAttribute讲解
2019/01/28 PHP
js右键菜单效果代码
2007/07/21 Javascript
php跨域调用json的例子
2013/11/13 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
禁用backspace网页回退功能的实现代码
2016/11/15 Javascript
js判断节假日实例代码
2017/12/27 Javascript
动态加载JavaScript文件的3种方式
2018/05/05 Javascript
解决Vue开发中对话框被遮罩层挡住的问题
2018/11/26 Javascript
jQuery动态操作表单示例【基于table表格】
2018/12/06 jQuery
详解滑动穿透(锁body)终极探索
2019/04/16 Javascript
详解vue 动态加载并注册组件且通过 render动态创建该组件
2019/05/30 Javascript
Node.js path模块,获取文件后缀名操作
2020/11/07 Javascript
Python中字典(dict)和列表(list)的排序方法实例
2014/06/16 Python
Python单元测试框架unittest简明使用实例
2015/04/13 Python
Python中列表、字典、元组数据结构的简单学习笔记
2016/03/20 Python
python正则表达式爬取猫眼电影top100
2018/02/24 Python
如何利用python查找电脑文件
2018/04/27 Python
Python构建图像分类识别器的方法
2019/01/12 Python
python实现从尾到头打印单链表操作示例
2020/02/22 Python
python suds访问webservice服务实现
2020/06/26 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
2020/09/09 Python
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
HTML5移动端手机网站开发流程
2016/04/25 HTML / CSS
建筑实习自我鉴定
2013/10/18 职场文书
生产内勤岗位职责
2013/12/07 职场文书
幼儿园百日安全活动总结
2015/05/07 职场文书
房贷收入证明范本
2015/06/12 职场文书
2015中秋祝酒词
2015/08/12 职场文书
初中体育教学随笔
2015/08/15 职场文书
Go语言编译原理之源码调试
2022/08/05 Golang