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使用WMI检测windows系统信息、硬盘信息、网卡信息的方法
May 15 Python
Java中重定向输出流实现用文件记录程序日志
Jun 12 Python
Python实现截屏的函数
Jul 25 Python
详解Python文本操作相关模块
Jun 22 Python
Python操作Oracle数据库的简单方法和封装类实例
May 07 Python
局域网内python socket实现windows与linux间的消息传送
Apr 19 Python
Python Selenium 之数据驱动测试的实现
Aug 01 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
Sep 20 Python
使用Python实现正态分布、正态分布采样
Nov 20 Python
python 实现turtle画图并导出图片格式的文件
Dec 07 Python
Python计算公交发车时间的完整代码
Feb 12 Python
keras中的loss、optimizer、metrics用法
Jun 15 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
一条久听不愿放下的DIY森海MX500,三言两语话神奇
2021/03/02 无线电
一个简单的自动发送邮件系统(三)
2006/10/09 PHP
PHP4实际应用经验篇(9)
2006/10/09 PHP
PHP curl 获取响应的状态码的方法
2014/01/13 PHP
解决laravel id非自增 模型取回为0 的问题
2019/10/11 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
Gambit vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
JavaScript实现数字数组按照倒序排列的方法
2015/04/06 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
2015/08/21 Javascript
JS+CSS实现自动切换的网页滑动门菜单效果代码
2015/09/14 Javascript
简述Matlab中size()函数的用法
2016/03/20 Javascript
Sequelize中用group by进行分组聚合查询
2016/12/12 Javascript
详解nodejs 文本操作模块-fs模块(三)
2016/12/22 NodeJs
express+mockjs实现模拟后台数据发送功能
2018/01/07 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
JS实现放烟花效果
2020/03/10 Javascript
[11:42]2018DOTA2国际邀请赛寻真——OG卷土重来
2018/08/17 DOTA
理解python多线程(python多线程简明教程)
2014/06/09 Python
python django集成cas验证系统
2014/07/14 Python
详解Python如何获取列表(List)的中位数
2016/08/12 Python
Python Flask-web表单使用详解
2017/11/18 Python
python版本单链表实现代码
2018/09/28 Python
python中的json总结
2018/10/11 Python
Python 新建文件夹与复制文件夹内所有内容的方法
2018/10/27 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
Python中turtle库的使用实例
2019/09/09 Python
django rest framework使用django-filter用法
2020/07/15 Python
CSS超出文本指定宽度用省略号代替和文本不换行
2016/05/05 HTML / CSS
德国街头和运动文化高品质商店:BSTN Store
2017/08/26 全球购物
英国珠宝和手表专家:Pleasance & Harper
2020/10/21 全球购物
厨师岗位职责
2013/11/12 职场文书
幼儿园秋游活动方案
2014/01/21 职场文书
酒店总经理职务说明书
2014/02/26 职场文书
英文自荐信范文
2015/03/25 职场文书
vue2的 router在使用过程中遇到的一些问题
2022/04/13 Vue.js
Android在Sqlite3中的应用及多线程使用数据库的建议
2022/04/24 Java/Android