目录
4.@Data
5.构造函数注解
7.日志注解
一、简介
Lombok 是一个 Java 类库,通过使用注解的方式,简化和消除 Java 类中样板代码的编写,例如 getter
、setter
、equals
、hashCode
、toString
等方法。它在编译时通过注解处理器自动生成这些代码,提高开发效率,减少代码冗余。
二、主要特性
- 自动生成
getter
和setter
方法:使用@Getter
和@Setter
注解,可以自动生成属性的访问器方法。 - 简化构造函数的创建:使用
@NoArgsConstructor
、@AllArgsConstructor
、@RequiredArgsConstructor
注解,可以快速生成不同类型的构造函数。 @Data
注解:综合了@Getter
、@Setter
、@EqualsAndHashCode
、@ToString
、@RequiredArgsConstructor
,用于简单的数据类。@Builder
注解:提供了构建者模式的支持,方便创建复杂对象。@Slf4j
等日志注解:自动为类添加日志记录器。@EqualsAndHashCode
和@ToString
注解:自动生成equals
、hashCode
、toString
方法。@Synchronized
、@Cleanup
等实用工具:提供线程安全和资源管理的支持。
三、快速上手
1.引入依赖
在 pom.xml
中添加 Lombok 依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
</dependency>
2.插件支持
在IDE中安装 Lombok 插件,并启用注解处理器:
四、常用注解
1.@Getter
和 @Setter
可以注解在类或属性上,自动生成属性的 getter
和 setter
方法。
public class User {
@Getter @Setter
private Long id;
@Getter @Setter
private String name;
}
等价于:
public class User {
private Long id;
private String name;
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
2.@ToString
生成 toString
方法,方便对象的字符串表示。
@ToString
public class User {
private Long id;
private String name;
}
生成的 toString
方法:
@Override
public String toString() {
return "User(id=" + this.getId() + ", name=" + this.getName() + ")";
}
3.@EqualsAndHashCode
生成 equals
和 hashCode
方法,方便对象比较和放入集合中。
@EqualsAndHashCode
public class User {
private Long id;
private String name;
}
4.@Data
综合性的注解,包含 @Getter
、@Setter
、@ToString
、@EqualsAndHashCode
、@RequiredArgsConstructor
。
@Data
public class User {
private Long id;
private String name;
}
5.构造函数注解
@NoArgsConstructor
:生成无参构造函数。
@AllArgsConstructor
:生成包含所有参数的构造函数。
@RequiredArgsConstructor
:生成包含 final
字段或带有 @NonNull
注解字段的构造函数。
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.NonNull;
@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
public class User {
private Long id;
@NonNull
private String name;
}
6.@Builder
实现构建者模式,方便创建复杂对象。
import lombok.Builder;
@Builder
public class User {
private Long id;
private String name;
private Integer age;
}
使用示例:
User user = User.builder()
.id(1L)
.name("张三")
.age(25)
.build();
7.日志注解
@Slf4j
:可以使用 log.info()
、log.error()
等打印日志。
@Slf4j
public class UserService {
public void process() {
log.info("Processing user: {}", user.getName());
}
}