一、介绍

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

  Lombok的功能简单一点说,就是可以帮我们生成一些代码,这些代码并不是在源码(source code)体现出来的,而是在字节码文件中。

  比如我们创建一个简单的pojo,需要生成有参构造函数、无参构造函数、getter、setter、toString、hashCode、equals这些个方法,虽然通过IDE也是可以生成代码的,但是,利用IDE生成的代码有个问题:代码量大、如果修改属性名后,这些方法基本都得重新生成,不咋方便。

  Lombox的功能:可以为我们生成上面说的那些方法,只需要我们在类名上使用相关注解即可。

二、导入jar包

  这里使用Maven来导入依赖:

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

  注意,maven引入依赖是,scope是provided,也就是说,lombok包在运行时是不需要的,主要是在编译的时候使用。

三、创建简单pojo

  这里举个简单的示例,就创建一个Person类:

import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString; // 注意下面使用的几个注解,都是Lombok提供的
@NoArgsConstructor
@AllArgsConstructor
@ToString
@EqualsAndHashCode
public class Person { // 创建三个属性
private Integer id;
private String name;
private String addr; // 没有使用IDE进行代码生成,编译源码时,Lombok会自动在字节码中生成方法(前面注解指定的那些方法)
}

  

  生成的代码如下:

public class Person {
private Integer id;
private String name;
private String addr; public Person() {
} public Person(final Integer id, final String name, final String addr) {
this.id = id;
this.name = name;
this.addr = addr;
} public String toString() {
return "Person(id=" + this.id + ", name=" + this.name + ", addr=" + this.addr + ")";
} public boolean equals(final Object o) {
// 会调用下面canEqual方法
} protected boolean canEqual(final Object other) {
return other instanceof Person;
} public int hashCode() {
// 计算出hashCode
}
}

  

四、Lombok常用的注解

  下面是Lombok常用的注解:

@NoArgsConstructor      // 生成无参构造函数
@AllArgsConstructor // 生成包含所有属性的有参构造函数
@ToString // 生成toString方法
@EqualsAndHashCode // 生成equals和hashCode方法
@Getter // 为所有字段生成getter
@Setter // 为所有字段生成setter
@Data // 等价于 @NoArgsConstructor + @Getter + @Setter + @EqualsAndHashCode + @ToString
@Slf4j // 自动生成log对象
@Builder // 生成Builder代码(非Builder设计模式)

  

五、进行测试

  创建测试类:

package cn.ganlixin.pojo;

import org.junit.Test;

public class TestPerson {

    @Test
public void testCreatePerson() {
// 虽然IDE提示下面的构造函数有错误,但是执行的时候,并不会报错,而是会正常运行
Person person = new Person(1, "ganlixin", "beijing");
System.out.println(person);
// 输出 Person(id=1, name=ganlixin, addr=beijing)
// 说明有参构造函数和toString方法已经生成了
}
}

 

六、解决IDEA提示Lombok生成方法未定义的问题

6.1、问题描述

  因为我们在使用Lombok的时候,Lombok为我们生成的代码是在字节码中(*.class),而不是在source code中,所以存在IDE提示Lombok生成的方法未定义的错误,导致项目不能正常编译,但是我们都知道,这是没问题的,只是IDE的问题。

  比如,使用@Setter来注解一个类的时候,我们可以免于手动写或者利用IDE生成每个属性的Setter方法,因为Lombok会为在编项目的时候,扫描到@Setter方法,就会在字节码中为属性生成setter方法。但是,我们在代码中调用一个该类实例对象的setter方法的时候,IDE就会提示没有定义该方法,其实IDE也没有错,只是他不是根据字节码中的方法来判断的。  

6.2、IDEA插件库安装

   步骤:打开IDEA -->  打开Preferences --> 选择Plugins,如下图

  

  安装Lombok插件后,重启IDEA即可。

6.3、下载插件安装(针对IDEA)

  如果在插件库中没有搜到Lombok,可以去通过本地安装的方式,按照下面的步骤进行操作:

  地址:https://github.com/mplushnikov/lombok-intellij-plugin/releases

  根据版本下载一个zip包即可。

  启动IDEA,打开preferences,建议在IDEA的启动界面打开preferences进行设置,因为这样设置后是全局的,每个项目都可以使用。

  

  选择Plugins

  

  

  打开右边的设置,选择Install Plugin from Disk

  然后选择第一步下载的zip包,点击确认即可。

  

  进入到Plugins,重启IDEA即可

  点击Installed,可以看到上一步安装的Lombok插件

  

 

最新文章

  1. ts 协议解析
  2. tcp三次握手和四次握手
  3. js控制键盘只能输入数字和退格键,delete键
  4. MVVM架构~前台后台分离的思想与实践
  5. SpringMVC源码分析系列
  6. 敏捷软件开发(1)--- STATE 模式
  7. This application failed to start because it could not find or load the Qt platform plugin &quot;xcb&quot;.
  8. [SAP ABAP开发技术总结]DIALOG屏幕流逻辑
  9. Hex-Rays Decompiler Tips and tricks Volatile memory
  10. configure文件中判断某函数或库是否存在的一个方法
  11. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(45)-工作流设计-设计步骤
  12. yii2 控制器里 action 大小写组合造成的路由问题
  13. 王学长的AAA树
  14. ASPxGridView-为每行添加序号
  15. Xilinx Vivado的使用详细介绍(1):创建工程、编写代码、行为仿真
  16. IDEA添加项目为library
  17. mybatis09--自连接一对多查询
  18. django字段查询参数及聚合函数
  19. 用SNMP实现对大型网络的轻松管理!
  20. 详细分析css float 属性以及position:absolute 的区别

热门文章

  1. C++(五十) — 容器中元素满足的条件
  2. P1972 [SDOI2009]HH的项链[离线+树状数组/主席树/分块/模拟]
  3. Apache虚拟主机&amp;伪静态配置
  4. 关于c++中的类型转换符
  5. assert 断言
  6. Django REST framework 使用简记
  7. CentOS7.6编译安装redis5.0
  8. python字符的表示格式
  9. [Flutter + Firebase] Enable Firebase for Flutter
  10. .net web开发——文件的上传和下载