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下如何让web元素的生成更简单的分析
Jul 17 Python
使用wxpython实现的一个简单图片浏览器实例
Jul 10 Python
简洁的十分钟Python入门教程
Apr 03 Python
详解详解Python中writelines()方法的使用
May 25 Python
python将excel转换为csv的代码方法总结
Jul 03 Python
python实现图片中文字分割效果
Jul 22 Python
Python numpy多维数组实现原理详解
Mar 10 Python
快速解释如何使用pandas的inplace参数的使用
Jul 23 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
Oct 21 Python
python3访问字典里的值实例方法
Nov 18 Python
filter使用python3代码进行迭代元素的实例详解
Dec 03 Python
详解win10下pytorch-gpu安装以及CUDA详细安装过程
Jan 28 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
php中的数组操作函数整理
2008/08/18 PHP
PHP提示Notice: Undefined variable的解决办法
2012/11/24 PHP
深入PHP操作MongoDB的技术总结
2013/06/02 PHP
解析php函数method_exists()与is_callable()的区别
2013/06/21 PHP
浅析PHP文件下载原理
2014/12/25 PHP
深入浅析PHP7.0新特征(五大新特征)
2015/10/29 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
Aster vs Newbee BO5 第三场2.19
2021/03/10 DOTA
网页和浏览器兼容性问题汇总(draft1)
2009/06/01 Javascript
基于jquery的滚动新闻列表
2010/06/19 Javascript
利用js实现遮罩以及弹出可移动登录窗口
2013/07/08 Javascript
怎么判断js脚本加载完成
2014/02/28 Javascript
javascript制作网页图片上实现下雨效果
2015/02/26 Javascript
浅谈javascript中call()、apply()、bind()的用法
2015/04/20 Javascript
Javascript使用SWFUpload进行多文件上传
2016/11/16 Javascript
JS中获取 DOM 元素的绝对位置实例详解
2018/04/23 Javascript
[02:18]DOTA2英雄基础教程 育母蜘蛛
2014/01/20 DOTA
Python连接mysql数据库的正确姿势
2016/02/03 Python
Python基于回溯法子集树模板解决马踏棋盘问题示例
2017/09/11 Python
PyQt5每天必学之弹出消息框
2018/04/19 Python
Django基础知识 URL路由系统详解
2019/07/18 Python
python调用函数、类和文件操作简单实例总结
2019/11/29 Python
在django中form的label和verbose name的区别说明
2020/05/20 Python
Python 爬取淘宝商品信息栏目的实现
2021/02/06 Python
策划助理岗位职责
2013/11/18 职场文书
菜篮子工程实施方案
2014/03/08 职场文书
网络管理专业求职信
2014/03/15 职场文书
法人授权委托书公证范本
2014/09/14 职场文书
平面设计师岗位职责
2014/09/18 职场文书
2015年资料员工作总结
2015/04/25 职场文书
和谐拯救危机观后感
2015/06/15 职场文书
反四风问题学习心得体会
2016/01/22 职场文书
不知如何爱孩子,这些方法教会您
2019/08/06 职场文书
CSS三大特性继承性、层叠性和优先级详解
2022/01/18 HTML / CSS
Python函数对象与闭包函数
2022/04/13 Python