lombok 是什么,它是一个工具类库,可以用简单的注解形式来简化代码,提高开发效率 ,要使用它,首先要在pom.xml中引入依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<scope>provided</scope>
</dependency>
当然,可以直接在创建项目时选中 lombok,就可以自动导入了。
一个一般的类,要自己定义getter、setter、构造器、hashcode、equals等方法,非常麻烦。
public class Person {
private String name;
private String address;
private Integer age;
private String hobbit;
private String phone;
public Person() {
}
public Person(String name, String address, Integer age, String hobbit, String phone) {
this.name = name;
this.address = address;
this.age = age;
this.hobbit = hobbit;
this.phone = phone;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getHobbit() {
return hobbit;
}
public void setHobbit(String hobbit) {
this.hobbit = hobbit;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", address='" + address + '\'' +
", age=" + age +
", hobbit='" + hobbit + '\'' +
", phone='" + phone + '\'' +
'}';
}
}
当用了lombok中的注解后,这些东西都会自动生成、自动重写,非常方便,可读性也强。
@Data // 重写 getter、setter、equals、hashCode、canEqual、toString方法
@AllArgsConstructor // 生成全参构造器
@NoArgsConstructor // 生成无参构造器
public class Person {
private String name;
private String address;
private Integer age;
private String hobbit;
private String phone;
}
lombok有几个常用的注解:
@Data // 注在类上,提供类的get、set、equals、hashCode、canEqual、toString方法
@AllArgsConstructor // 注在类上,提供类的全参构造
@NoArgsConstructor // 注在类上,提供类的无参构造
@Setter // 注在属性上,提供 set 方法
@Getter // 注在属性上,提供 get 方法
@EqualsAndHashCode // 注在类上,提供对应的 equals 和 hashCode 方法
@Log4j/@Slf4j // 注在类上,提供对应的 Logger 对象,变量名为 log
@Builder // 生成构建器模式
优点:
- 能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,提高了一定的开发效率
- 让代码变得简洁,不用过多的去关注相应的方法
- 属性做修改时,也简化了维护为这些属性所生成的getter/setter方法等
缺点
- 不支持多种参数构造器的重载
- 虽然省去了手动创建getter/setter方法的麻烦,但大大降低了源代码的可读性和完整性,降低了阅读源代码的舒适度
- Lombok自动只会为封装类生成
getter
和setter