lombok是一个java类库,用来简化pojo实体类的开发。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
1.@Setter和@Getter
@Getter
@Setter
@Component
public class User {
@Setter(AccessLevel.PROTECTED)
private String name;
@Getter(AccessLevel.NONE)
private String password;
private String email;
}
作用:为类中的属性提供Getter和Setter方法
使用:标注在类或者属性,在属性上方则为属性添加Setter和Getter方法,在类上方则表示给所有属性添加Getter和Setter方法
常用属性 | 作用 |
---|---|
AccessLevel.NONE | 可以取消对应的get或set方法 |
AccessLevel.PRIVATE | 设置get或set方法为private |
AccessLevel.PUBLIC | 设置get或set方法为public |
AccessLevel.PACKAGE | 设置get或set方法在包内访问,但不在包外访问 |
AccessLevel.PROTECTED | 设置get或set方法为proteced |
AccessLevel.MODULE | 设值get或set方法为模块级 |
注意:static修饰的变量不生成get和set方法,final修饰的变量只生成get方法,不生成set方法
2.@ToString
@Getter
@Setter
@Component
@ToString(exclude = "password")
//exclude:取消一个或多个属性,排除不想包含在生成的字符串中的字段
public class User {
private String name;
@Getter(AccessLevel.NONE)
private String password;
private String email;
}
作用:自动生成类的toString方法
使用:在类上添加 @ToString 注解
常用属性 | 作用 |
---|---|
includeFieldNames | 指定是否在生成的字符串中包含字段的名称,默认值为 true |
doNotUseGetters | 如果设置为 true,则生成的 toString() 方法将直接访问字段,而不是使用 getter 方法,默认值为 false |
of | 用于选择要包含在生成的字符串中的字段 |
callSuper | 如果设置为 true,则生成的 toString() 方法将包含父类的字段,默认值为 false |
exclude | 用于排除不想包含在生成的字符串中的字段 |
注意:默认情况下,所有非静态字段都会被包含在生成的 toString() 方法中,除非使用 exclude属性来排除特定字段。
3.@NonNull
作用:用于指示特定的参数、返回值或字段不能为 null
使用:在参数前,特定字段和方法上添加注解
import lombok.NonNull;
public class Person {
@NonNull
private String name;
public Person(@NonNull String name) {
this.name = name;
}
public void setName(@NonNull String name) {
this.name = name;
}
@NonNull
public String getName() {
return name;
}
}
4.构造函数注解
@NoArgsConstructor
作用: 生成含有必需参数的构造函数
使用位置: 类上
@AllArgsConstructor
作用: 生成全参构造函数
使用位置: 类上
@RequiredArgsConstructor
作用: 生成含有final和@NonNull修饰的属性的构造函数
使用位置: 类上
@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
public class User {
private String name;
private String password;
private String email;
}
5.@EqualsAndHashCode
作用:自动生成equals和hashCode方法
使用位置: 类上
@EqualsAndHashCode
public class User {
private String name;
private String password;
private String email;
}
6.@Data
作用: 组合注解,包含@ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor
使用位置: 类上
@Data
public class User {
private String name;
private String password;
private String email;
}
7.@Builder
作用:用于自动生成一个构建器模式的实现,使得创建对象更加灵活和简洁。
使用:应用于类、构造函数或者方法上。
用法:
@Builder
public class User {
private String name;
private String password;
private String email;
}
@Configuration
public class MyConfig {
public User test(){
// 使用构建器创建对象
User user = User.builder()
.name("张三")
.email("23173217@qq.com")
.password("123456")
.build();
return user;
}
}