一、Lombok常用注解及含义
Lombok是一款Java库,可以通过注解的方式来减少一些模板代码,提高开发效率和代码的可读性。Lombok常用注解如下:
- @Getter/@Setter: 自动生成JavaBean的getter/setter方法。
- @ToString: 自动生成ToString方法。
- @EqualsAndHashCode: 自动生成equals和hashCode方法。
- @NoArgsConstructor/@RequiredArgsConstructor/@AllArgsConstructor: 自动生成无参/指定参数/所有参数的构造函数。
- @Data: 包含@Getter,@Setter,@ToString,@EqualsAndHashCode和@RequiredArgsConstructor,常用于值对象。
- @Builder: 链式调用生成器模式,简化对象创建过程。
@Data
public class User {
private Long id;
private String name;
private String email;
}
上面的代码使用@Data注解,等同于同时使用了@Getter、@Setter、@ToString、@EqualsAndHashCode和@RequiredArgsConstructor注解。
二、Lombok异常注解
Lombok还提供了一些异常处理相关的注解,如下:
- @SneakyThrows: 在方法内部自动捕获并忽略异常,等效于try-catch。使用时,需要保证被标注方法的签名抛出声明的异常。
- @Getter(lazy=true): 延迟加载,只有在第一次使用时才进行初始化。如果在初始化时抛出异常,则后续调用将抛出NullPointerException。
- @NonNull: 用在参数上,可以生成参数非空判断,如果参数为空,则抛出NullPointerException。
@SneakyThrows(ReflectiveOperationException.class)
public void test() {
//some reflection code
}
public class User {
@Getter(lazy=true)
private final String fullName = computeFullName();
private String computeFullName() {
//some logic to compute fullName
}
}
public void doSomething(@NonNull String arg) {
//some logic
}
三、Lombok注解的默认值
有些Lombok注解可以指定一些默认值,如下:
- @Builder: 可以设置builder名称。
- @Value: 默认final、@ToString、@EqualsAndHashCode、@AllArgsConstructor、@FieldDefaults。
- @NoArgsConstructor/@AllArgsConstructor: 可以指定访问级别。
@Builder(builderMethodName="myBuilder")
public class User {
private Long id;
private String name;
private String email;
}
@Value(staticConstructor="of")
public class Address {
String city;
String street;
int number;
}
@NoArgsConstructor(access=AccessLevel.PROTECTED) //设置访问级别为protected
public class Person {
private Long id;
private String name;
}
四、Lombok注解启用
在使用Lombok时,需要在编译器中安装Lombok插件,并在项目中引入Lombok库。同时,需要在项目中添加如下依赖项:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${org.projectlombok-version}</version>
<scope>provided</scope>
</dependency>
五、Lombok builder注解使用
使用Lombok builder注解可以轻松实现Builder模式,可以方便地创建对象,在对象的属性比较多时使用较为方便。
User user = User.builder()
.id(1L)
.name("Lily")
.email("lily@example.com")
.build();
六、Lombok怎么用
在开发过程中,如果使用了Lombok注解,可以通过以下步骤来进行验证:
- 安装Lombok插件
- 在项目中引入Lombok库
- 在代码中使用Lombok注解
- 编译并运行项目
七、Lombok的data注解
使用Lombok的@Data注解可以让JavaBean类的定义更简单,但需要注意的是,当属性较多时,可能会出现无限递归的问题。此时,可以通过对不需要的字段使用@ToString.Exclude和@EqualsAndHashCode.Exclude来排除该字段。
@Data
public class User {
private Long id;
private String name;
@ToString.Exclude
private String email;
}
八、Lombok自定义注解
使用Lombok提供的注解可以快速地生成简洁的Java代码,在实际开发过程中,如果需要使用自定义的注解,可以通过定义注解,并在代码中使用该注解来实现。
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface LogExecutionTime {
}