目录
1.lombok是什么?
lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具,简单来说,比如我们新建了一个类,然后在其中写了几个字段,然后通常情况下我们需要手动去建立getter和setter方法啊,构造函数啊之类的,lombok的作用就是为了省去我们手动创建这些代码的麻烦,它能够在我们编译源码的时候自动帮我们生成这些方法,虽然有人可能会说IDE里面都自带自动生成这些方法的功能,但是使用lombok会使你的代码看起来更加简洁,写起来也更加方便。
lombok能够达到的效果就是在源码中不需要写一些通用的方法,但是在编译生成的字节码文件中会帮我们生成这些方法,这就是lombok的神奇作用。
官方的解释:Lombok是一个java库,它可以自动插入编辑器和构建工具,为您的java锦上添花。永远不要再写另一个getter或equals方法,只需一个注释,您的类就有一个功能齐全的生成器,自动记录变量,等等。
lombok的官方地址:https://projectlombok.org/
lombok的Github地址:https://github.com/rzwitserloot/lombok
2.lombok包含的常用注解的解释
1. @Data
注解 : 一般用在类上,提供类所有属性的 get
和 set
方法,此外还提供了equals
、canEqual
、hashCode
、toString
等方法;
2. @Setter
注解:一般用在属性上,为属性提供 set
方法, 用在再类上则表示当前类中所有属性都生成set
方法;
3. @Getter
注解:用在属性上,为属性提供 get
方法, 用在再类上表示当前类中所有属性都生成get
方法;
4. @Log4j or @Slf4j
注解 :用在类上,为类提供一个 属性名为log
的 log4j
日志对象;
5. @NoArgsConstructor
注解:用在类上,为类提供一个无参的构造方法;
6. @AllArgsConstructor
注解:用在类上,为类提供一个全参的构造方法;
7. @RequiredArgsConstructor
注解: 用在类上,生成一个包含 "特定参数" 的构造器,特定参数指的是那些有加上 final
修饰词的变量们;
8. @Builder
注解: 用在类上,自动生成流式 set 值写法,从此之后再也不用写一堆 setter 了;
1. @Data
注解 : 一般用在类上,提供类所有属性的 get
和 set
方法,此外还提供了equals
、canEqual
、hashCode
、toString
等方法;
2. @Setter
注解:一般用在属性上,为属性提供 set
方法, 用在再类上则表示当前类中所有属性都生成set
方法;
3. @Getter
注解:用在属性上,为属性提供 get
方法, 用在再类上表示当前类中所有属性都生成get
方法;
4. @Log4j or @Slf4j
注解 :用在类上,为类提供一个 属性名为log
的 log4j
日志对象;
5. @NoArgsConstructor
注解:用在类上,为类提供一个无参的构造方法;
6. @AllArgsConstructor
注解:用在类上,为类提供一个全参的构造方法;
7. @RequiredArgsConstructor
注解: 用在类上,生成一个包含 "特定参数" 的构造器,特定参数指的是那些有加上 final
修饰词的变量们;
8. @Builder
注解: 用在类上,自动生成流式 set 值写法,从此之后再也不用写一堆 setter 了;
2.1简单举例:
2.2.1没有使用Lombok的代码:
public class Master {
private Integer id;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Master() {
}
@Override
public String toString() {
return "Master{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", skill='" + skill + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Master master = (Master) o;
return Objects.equals(id, master.id) && Objects.equals(name, master.name) && Objects.equals(age, master.age) && Objects.equals(skill, master.skill);
}
@Override
public int hashCode() {
return Objects.hash(id, name, age, skill);
}
public Master(Integer id, String name, Integer age, String skill) {
this.id = id;
this.name = name;
this.age = age;
this.skill = skill;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSkill() {
return skill;
}
public void setSkill(String skill) {
this.skill = skill;
}
private String name;
private Integer age;
private String skill;
}
2.2.2下面是使用lombok之后的代码:
@Data/*使用这个注解,就不用再去手写Getter,Setter,equals,canEqual,hasCode,toString等方法了,注解后在编译时会自动加进去。*/
@AllArgsConstructor /*全参构造*/
@NoArgsConstructor /*无参空构造*/
public class Master {
private Integer id;
private String name;
private Integer age;
private String skill;
}
是不是很方便!!!!!
3.lombok怎么用?怎么引入lombok?
3.1lombok的使用很简单:
1.首先像引入jar包一样引入Lombok的依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>、
<version>1.18.20</version>
</dependency>
2.在对应类上加入对应的注解就好了。比如你不想自己写getter或者setter方法可以在对应的实体类(或者Bean)上加上@Data注解,再者你不想自己写类的有参或者无参构造方法可以在对应的实体类上加入@AllArgsConstructor和@NoArgsConstructor。使用起来就是怎么方便。以上就是本人对lombok的理解和解释欢迎大家评论区补充和讨论。