12. Lombok插件的安装以及使用

LomboK介绍和配置(能用就用如果使用出问题就不要用)

1.目标

  • 掌握LomboK的配置

2.路径

  1. 什么是LomboK

  2. LomboK的作用

  3. LomboK的配置

3.讲解

3.1什么是LomboK

Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。

官网: https://www.projectlombok.org/

3.2Lombok的作用

通过添加注解的方式,Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。

例如开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器、equals等方法,而且需要维护,当属性多时会出现大量的getter/setter方法,这些显得很冗长也没有太多技术含量,一旦修改属性,就容易出现忘记修改对应方法的失误。

而使用 Lombok 插件后,就不需要在代码里面写getter/setter/toString/HashCode等等方法,将会在编译后的class文件中自动添加,使代码看起来更简洁些。

3.3 Lombok的配置

3.3.1 添加maven依赖

image-20201213235926585
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version><scope>provided</scope>
</dependency>
3.3.2 安装插件

使用Lombok还需要插件的配合,我使用开发工具为idea. 打开idea的设置,点击Plugins,点击Browse repositories,在弹出的窗口中搜索lombok,然后安装即可.

image-20191121092349714

另外,新版本的安装界面如下:

image-20201214000558886

安装完了插件之后,基本就完成了。

可以开启服务,测试能否正常启动编译如下:

image-20201214001720045

不过也有些时候会碰到编译时出错的情况,可以按照下面进行解决。

3.3.3 解决编译时出错问题

编译时出错,可能是没有enable注解处理器。Annotation Processors > Enable annotation processing。设置完成之后程序正常运行。

image-20191121092543928

4.小结

  1. Lombox: 就是一个工具, 简化java代码开发

  2. Lombok环境

  • 添加坐标

  • 添加插件

Lombok的常用注解

1.目标

  • 掌握Lombox的常用注解

2.路径

  1. @Data

  2. @Getter/@Setter

  3. @ToString

  4. @NoArgsConstructor, @AllArgsConstructor

3.讲解

3.1@Data

@Data注解在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。

3.1.1 在项目中创建 JavaBean,创建一个User类,并使用 @Data 注解

image-20201214002022649
package com.bean;import lombok.Data;/**** Data注解:* 可以添加get、set、toString、equals、hashcode等等方法* * @author Aron.li* @date 2020/12/14 0:19*/
@Data
public class User {private Integer id;private String username;private String password;private String address;private String nickname;private String gender;private String email;private String status;
}
3.1.2 创建一个单元测试,测试能否执行 get、set、toString、equals、hashcode等等方法

image-20201214002411173
public class UserTest {@Testpublic void test01(){User user = new User();user.setUsername("肥子白");user.setNickname("fat boy");user.setEmail("381789@qq.com");System.out.println(user.getUsername());System.out.println(user);}}
3.1.3 查看编译后生成的 class 文件,可以看到 Lombok 自动生成的代码

image-20201214002838343

如果想要确认自动生成了什么,可以看编译后的 class 文件更加直观。

3.2@Getter/@Setter

如果觉得@Data太过粗暴不够精细,可以使用@Getter/@Setter注解,此注解在属性上,可以为相应的属性自动生成Getter/Setter方法.

3.2.1 针对某个属性进行 @Getter/@Setter注解

image-20201214003032293
public class User implements Serializable {@Setter@Getterprivate Integer id;private String username;private String password;private String address;private String nickname;private String gender;private String email;private String status;
}
3.2.2 查看再次执行编译后的 class 文件

image-20201214003143140

可以看到只生成了空参构造器,以及 id 的 getter/setter

3.3@ToString

类使用@ToString注解,Lombok会生成一个toString()方法,默认情况下,会输出类名、所有属性(会按照属性定义顺序),用逗号来分割。通过exclude属性指定忽略字段不输出,

3.3.1 @ToString 使用 exclude 指定忽略 id 字段不输出

image-20201214003351799
@ToString(exclude = {"id"})
public class User implements Serializable {private Integer id;private String username;private String password;private String address;private String nickname;private String gender;private String email;private String status;
}
3.3.2 查看再次执行编译后的 class 文件

image-20201214003453370

3.4@xxxConstructor

  • @NoArgsConstructor: 无参构造器

@NoArgsConstructor
public class User implements Serializable{private Integer id;private String username;private String password;private String address;private String nickname;private String gender;private String email;private String status;
}
  • @AllArgsConstructor: 全参构造器

@AllArgsConstructor
public class User implements Serializable{private Integer id;private String username;private String password;private String address;private String nickname;private String gender;private String email;private String status;
}
3.4.1 设置自动生成 无参构造器 以及 全参构造器

image-20201214003636190
@AllArgsConstructor
@NoArgsConstructor
@ToString(exclude = {"id"})
public class User implements Serializable {private Integer id;private String username;private String password;private String address;private String nickname;private String gender;private String email;private String status;
}
3.4.2  查看再次执行编译后的 class 文件

image-20201214003729107

4.小结

4.1注解

  • @Data

    • 用在类上面的 , 生成set,get, toString, hashCode,canEqual、toString方法

  • @Getter

  • 用在字段, 生成get方法

  • @Setter

    • 用在字段, 生成set方法

  • @ToString

    • 用在类上面的   生成toString方法

  • @xxxConstructor

    • 用在类上面的 生成构造方法 (只能生成无参和全参的构造方法)

4.2优缺点

优点:

  1. 能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,提高了一定的开发效率

  2. 让代码变得简洁,不用过多的去关注相应的方法

  3. 属性做修改时,也简化了维护为这些属性所生成的getter/setter方法等

缺点:

  1. 不支持多种参数构造器的重载

  2. 由于环境问题可能会导致lombok失效,如果遇到这种情况,直接不要使用lombok

Lombok插件的安装以及使用相关推荐

  1. IntelliJ IDEA lombok插件的安装和使用

    IntelliJ IDEA是一款非常优秀的集成开发工具,功能强大,而且插件众多.lombok是开源的代码生成库,是一款非常实用的小工具,我们在编辑实体类时可以通过lombok注解减少getter.se ...

  2. IntelliJ IDEA lombok插件的安装和使用听

    IntelliJ IDEA是一款非常优秀的集成开发工具,功能强大,而且插件众多.lombok是开源的代码生成库,是一款非常实用的小工具,我们在编辑实体类时可以通过lombok注解减少getter.se ...

  3. Lombok插件的安装与使用

    Lombok插件的安装与使用 文章目录 Lombok插件的安装与使用 下载插件 常用注解 简单使用 下载插件 Lombok 插件提供了一些注解,可以让我们不用再去手动实现 get.set.toStri ...

  4. IDEA中Lombok插件的安装与使用

    1.安装 1.1 2021 之前版本安装lombok 找到idea的settings--plugin选项--搜索Lombok--安装 具体可参考: IDEA中Lombok插件的安装与使用_魏晓蕾的博客 ...

  5. IDEA从零到精通(24)之lombok插件的安装与使用

    文章目录 作者简介 引言 导航 概述 安装插件 使用 小结 导航 热门专栏推荐 作者简介 作者名:编程界明世隐 简介:CSDN博客专家,从事软件开发多年,精通Java.JavaScript,博主也是从 ...

  6. 为Eclipse安装lombok插件

    原生的Eclipse没有lombok插件,即使项目引入了lombok依赖也无法正常使用@Data等常用标签.下面介绍一下如何手动为Eclipse添加lombok插件,具体操作步骤如下: (1)打开Do ...

  7. IDEA从零到精通(26)之MybatisX插件的安装与使用

    文章目录 作者简介 引言 导航 概述 安装插件 插件的使用 小结 导航 热门专栏推荐 作者简介 作者名:编程界明世隐 简介:CSDN博客专家,从事软件开发多年,精通Java.JavaScript,博主 ...

  8. linux上logbok实时日志_日志lombok插件安装及配置

    安装lombok插件 运行Lombok.jar java -jar D:\001_software\work\Java\libs\lombok.jar 确认完eclipse的安装路径后,点击insta ...

  9. IDE安装Lombok插件提高开发效率

    Lombok官方api:https://projectlombok.org/features/index.html 使用lombok之后,省去了许多没必要的get,set,toString,equal ...

最新文章

  1. Jan 09 - Number of 1 Bits; Bit Operation;
  2. WIN7 IE8的桌面图标解决了(简单有效)
  3. 有效沟通bic法则_学好英语的18条黄金法则,强烈推荐给孩子看
  4. java - 人员分配组合
  5. 开源SUP对接API卡盟程序卡信乐v2.0源码
  6. HT for Web的HTML5树组件延迟加载技术实现
  7. 2017.3.9 Harry and Christmas tree 失败总结
  8. PreSubclassWindow()作用
  9. 使用PS去掉、添加、复制图片中的文字
  10. html清除span的text,使用jquery删除字符串中的span标签
  11. mysql三表关联查询
  12. 静一静,做好人生的减法
  13. 使用七牛云上传图片时出现Network error during preQuery和运行时出现okhttp的问题
  14. Eaglooe 学习日记1
  15. 基于php食堂外卖系统
  16. 人工智能掀起巨浪,“AI独角兽”第四范式奔向港交所
  17. 盘点那些以“马”作为车标的汽车品牌
  18. docker -用-v方式创建容器数据卷
  19. 数据结构之反黄牛火车票订票系统
  20. 如何用无代码开发平台自主、快速搭建阿米巴管理系统?

热门文章

  1. 使用Intellij Idea创建第一个SpringBoot+MyBatis+MySql项目并运行(附安装教程),使用Maven构建项目并管理第三方jar
  2. 【幻灯片制作】Focusky教程 | 神奇的线条
  3. 天肌1300和高通骁龙778g参数对比 天肌1300和骁龙778g哪个好
  4. 详解printf重定向到文件中,打印日志的实现
  5. SF BAY ACM TALK:深层神经网络中的大规模自调整
  6. hdu 2648 shoping
  7. 计算机毕业设计android的个人理财记账app(源码+系统+mysql数据库+Lw文档)
  8. Python求数据集的四分位点
  9. python读取cad表格,Python使用pyautocad+openpyxl处理cad文件示例
  10. igs时间和utc_UTC时间与北京时间的关系