前言
Lombok是什么?
在我们写JavaBean时常常需要写Getter&Setter,以及类的构造器,equals方法等等,引入了Lombok以后,可以通过注解的方式声明以上方法,这样就不用手动去写代码了。
如何使用Lombok简化开发?
在Maven中导入Lombook依赖即可(有可能还需要去idea等开发工具插件中下载Lombook才能识别)
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>b
</dependency>
新建一个User类
public class User {
private String name;
private Integer age;
private String address;
}
常用注解
@Getter,@Setter
可以在类上加@Getter和@Setter表示生成这个类的所有成员变量get,set方法。
@Getter
@Setter
public class User {
private String name;
private Integer age;
private String address;
}
或者只在指定的成员变量上,生成指定对象的方法。
public class User {
@Getter
@Setter
private String name;
private Integer age;
private String address;
}
@NoArgsConstructor
声明在类上,生成空参构造器。
@AllArgsConstructor
声明在类上,生成全参构造器。
@AllArgsConstructor
@NoArgsConstructor
public class User {
private String name;
private Integer age;
private String address;
}
@ToString
覆盖默认的toString()方法,默认是全部参数。
可以用of来指定成员变量
@ToString(of={"name","age"})
@AllArgsConstructor
@NoArgsConstructor
public class User {
private String name;
private Integer age;
private String address;
}
测试输出:
public void testUser(){
User user = new User("zhangShan",123,"xxx");
System.out.println(user.toString());
}
/*
输出结果:
User(name=zhangShan, age=123)
*/
也可以用exclude排除指定参数
@ToString(exclude = {"name"})
@AllArgsConstructor
@NoArgsConstructor
public class User {
private String name;
private Integer age;
private String address;
}
测试输出:
public void testUser(){
User user = new User("zhangShan",123,"xxx");
System.out.println(user.toString());
}
/*
排除了 name
User(age=123, address=xxx)
*/
@EqualsAndHashCode
作用在类上,覆写了默认的hashCode()和equal()。
- 注意默认的equal()是比较地址值,此注解比较的是属性值
@Data
相当于书写了@Getter,@Setter,@ToString,@EqualsAndHashCode的总和(一般情况@Data就够用了)
@NonNull
注解在属性上,标识属性是不能为空,为空则抛出异常(java.lang.NullPointerException)。
@RequiredArgsConstructor
只生成有final修饰和@NonNull作用的成员变量的构造器
@RequiredArgsConstructor
public class User {
@NonNull
private String name;
private final Integer age;
private String address;
}
记录日志常用 @Log4j2
@Log4j2
public class Test {
@org.junit.jupiter.api.Test
public void testUser(){
log.info("info");
log.debug("debug");
log.error("error");
/*
还有很多日志类型~
*/
}
}
阿巴阿巴学习笔记~