目录
工具安装
依赖注入
注解类别
1. @Getter / @Setter
2. @ToString
3. @EqualsAndHashCode
4. @NoArgsConstructor / @RequiredArgsConstructor / @AllArgsConstructor
5. @Data
示例
注意事项
6. @Value
7. @Builder
8. @Slf4j / @Log / @Log4j / @Log4j2 / @XSlf4j
9. @NonNull
10. @Synchronized
Lombok 是一个 Java 库,旨在通过注解的方式减少样板代码,提高开发效率。以下是一些常用的 Lombok 注解及其作用:
工具安装
工具支持:需要在 IDE 中安装 Lombok 插件以支持相关注解。
需要再Marketplace下载lombok安装
依赖注入
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>最新版本</version>
<scope>provided</scope>
</dependency>
注解类别
1. @Getter / @Setter
- @Getter:为字段生成 getter 方法。
- @Setter:为字段生成 setter 方法。
2. @ToString
- 生成一个
toString
方法,包含类名、所有字段及其值。
3. @EqualsAndHashCode
- 生成
equals
方法和hashCode
方法,基于类的字段。
4. @NoArgsConstructor / @RequiredArgsConstructor / @AllArgsConstructor
- @NoArgsConstructor:生成一个无参构造器。
- @RequiredArgsConstructor:为每个
final
字段和带有@NonNull
注解的字段生成一个构造器。 - @AllArgsConstructor:为类中的所有字段生成一个全参数构造器。
5. @Data
- 是
@Getter
、@Setter
、@ToString
、@EqualsAndHashCode
和@RequiredArgsConstructor
注解的组合,为类提供了一个全面的默认设置。
示例
import lombok.Data;
@Data
public class User {
private String name;
private int age;
}
在上面的示例中,Lombok 会为 User
类生成 getName
、setName
、getAge
、setAge
方法,以及 toString
、equals
和 hashCode
方法。这样,你就不需要手动编写这些样板代码。
注意事项
- 可变性:
@Data
注解会为所有非final
字段生成 setter 方法,这可能会使对象变得可变。如果你想创建一个不可变的对象,可以考虑使用@Value
注解代替@Data
。 - 与其他 Lombok 注解的关系:
@Data
是几个 Lombok 注解的组合,包括@Getter
、@Setter
、@ToString
、@EqualsAndHashCode
和@RequiredArgsConstructor
。如果你只需要@Data
提供的部分功能,可以单独使用这些注解。 - 构造器:
@Data
注解默认不会生成带参数的构造器。如果你需要带参数的构造器,可以使用@AllArgsConstructor
、@RequiredArgsConstructor
或@NoArgsConstructor
注解。
6. @Value
- 类似于
@Data
,但所有字段默认为final
,并且只生成 getter 方法,使类成为不可变的。
7. @Builder
- 为类提供 Builder 设计模式的实现。
8. @Slf4j / @Log / @Log4j / @Log4j2 / @XSlf4j
- 为类提供日志对象,根据注解不同支持不同的日志框架(如 SLF4J、JUL、Log4j 等)。
9. @NonNull
- 用在方法的参数上,Lombok 会生成一个空检查,如果参数为
null
,会抛出NullPointerException
。
10. @Synchronized
- 为方法提供同步锁,类似于
synchronized
关键字,但锁定的是一个私有字段而不是整个方法对象。