lombok详解

搭建

如果IDEA版本在2020.3以上,不需要安装Lombok插件。如果IDEA版本在2020.3以下,需要安装Lombok插件,安装方法如下: 点击Flie->Setting->Plugins,搜索Lombok,安装

在IDEA中,按住Alt+7可以查看Lombok生成的代码

普通maven项目Lombok依赖为:

  
                org.projectlombok
                lombok
                1.18.22
                provided
            


SpringBoot项目Lombok的引入方式为:


                org.projectlombok
                lombok
                true
            

基础注解

@Setter、@Getter:为类中的属性提供setter/getter方法

 //给类下的所有属性添加Setter/Getter
          @Setter
          @Getter
          public class User {
            //给id属性添加Setter
            @Setter
            private Integer id;
            //给username的setter方法设置私有权限
            @Setter(AccessLevel.PRIVATE)
            private String username;
            //取消password的Getter方法
            @Getter(AccessLevel.NONE)
            private String password;
            private static int age;
            private final String address = null;
          }

@ToString:生成toString方法,默认情况下它会按顺序打印类名称以及每个字段

exclude:取消某一个或多个变量在toString方法中的显示

@Setter
          @Getter
          //给User2设置一个toString方法,该方法不会显示password的值
          @ToString(exclude = {"password"})
          public class User2 {
            private Integer id;
            private String username;
            private String password;
          }

@EqualsAndHashCode:生成equals和hashCode、canEqual方法。

用于比较两个类对象是否相同。

对比时只使用非静态属性 / 默认仅使用该类定义的属性不比较父类定义的属性

exclude: 比较时排除一些属性

of: 比较时只使用一些属性

  @Setter
          @Getter
          @ToString
          //@EqualsAndHashCode(exclude = {"password"})
          //排除password,只使用id,username对比及计算hash
          @EqualsAndHashCode(of = {"username"})
          //只使用username对比及计算hash
          public class User3 {
            private Integer id;
            private String username;
            private String password;
          }

@NonNull:于方法参数前,表示调用该方法时参数不能为null;

用于属性上方,表示为该属性赋值时值不能为null 位置:方法参数前或属性上方。

 @Setter
          @Getter
          public class User4 {
            // 调用构造方法或setter给id赋值时,值不能为null
            @NonNull
            private Integer id;
            private String username;
            private String password;
          
          
            // 调用sleep方法时,time参数不能为null
            public void sleep(@NonNull Integer time){
              System.out.println("睡觉");
             }
          }

@NoArgsConstructor:生成无参构造方法

@AllArgsConstructor:生成全参的构造方法

@RequiredArgsConstructor:生成包含final和@NonNull修饰的属性的构造方法 

 @Setter
          @Getter
          //@NoArgsConstructor // 给类提供无参构造方法
          @RequiredArgsConstructor // 生成两个username和sex参数的构造方法
          @AllArgsConstructor//提供全参构造方法
          public class User5 {
            @NonNull
            private Integer id;
            private String username;
            private String password;
            private final String sex;
          }

一键注解

@Data:

相当于同时添加@Setter、@Getter、@ToString、@EqualsAndHashCode、 @RequiredArgsConstructor五个注解

@Builder:提供链式风格创建对象

位置:类上方 

 @Test
          public void testUser() {
            User6 user6 = User6.builder()
               .id(1)
               .username("itbaizhan")
               .password("itbaizhan")
               .build();
          }

@Log4j2:在类中生成日志对象,在方法中可以直接使用

log.info("输出日志");

@Cleanup:自动关闭资源,如IO流对象。

位置:代码前方 

@SneakyThrows

作用:对方法中异常进行捕捉并抛出

位置:方法上方

   @SneakyThrows
          public void read() {
            @Cleanup FileInputStream fis = new FileInputStream("");
          }          

你可能感兴趣的:(springboot,java)