1.官网介绍
Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.
中文意思:Project Lombok是一个java库,它可以自动插入到您的编辑器和构建工具中,为您的java注入新的活力。不要再编写其他getter或equals方法,有了一个注释,类就有了功能齐全的构建器、自动化日志变量等等。
2.使用(IDEA)
- IDEA安装Lombok插件
- 引入Maven依赖
<dependencies>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
</dependency>
</dependencies>
- 在代码中增加注解
@Data
@Data注解在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。
package com.liu.pojo;
import lombok.Data;
import java.util.Date;
/**
* @author liucong
* @date 2020/10/4 - 15:15
*/
@Data
public class Blog {
private String id;
private String title;
private String author;
private Date createTime;
private int views;
}
@Getter/@Setter
此注解在属性上,可以为相应的属性自动生成Getter/Setter方法。
package com.liu.pojo;
import lombok.Getter;
import lombok.Setter;
/**
* @author liucong
* @date 2020/10/4 - 9:25
*/
public class Student {
@Setter@Getter
private int id;
private String name;
private int tid;
}
@ToString
类使用@ToString注解,Lombok会生成一个toString()方法,默认情况下,会输出类名、所有属性(会按照属性定义顺序),用逗号来分割。
例如:Student(id=1, name=lisi, tid=1)
@NoArgsConstructor , @AllArgsConstructor
无参构造器、全参构造器。
package com.liu.pojo;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
/**
* @author liucong
* @date 2020/10/4 - 9:25
*/
@NoArgsConstructor
@AllArgsConstructor
public class Student {
private int id;
private String name;
private int tid;
}
3.Lombok的优缺点
优点:
- 能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,提高了一定的开发效率
- 让代码变得简洁,不用过多的去关注相应的方法
- 属性做修改时,也简化了维护为这些属性所生成的getter/setter方法等
缺点:
- 不支持多种参数构造器的重载
- 虽然省去了手动创建getter/setter方法的麻烦,但大大降低了源代码的可读性和完整性,降低了阅读源代码的舒适度