一、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 {
    }
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/287333.html
微信扫一扫 
支付宝扫一扫