SpringBoot中lombok使用

拼搏现实的明天。 2023-01-08 08:28 269阅读 0赞

lombok概述

  • lombok简介

    Lombok想要解决了的是在我们实体Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不会用到,但是某些时候仍然需要复写,以期方便使用的方法;在使用Lombok之后,将由其来自动帮你实现代码生成,注意,其是 在运行过程中,帮你自动生成的 。就是说,将极大减少你的代码总量。

  • lombok作用

    消除模板代码

    getter、setter、构造器、toString()、equals()

    便捷的生成比较复杂的代码,例如一个POJO要转化成构建器模式的形式,只需要一个注解。

SpringBoot中使用lombok

  1. 添加依赖


    org.projectlombok
    lombok
    1.16.10
  2. 编写一个实体类 User,使用@Data注解

    @Data
    public class User {
    private String name;
    private int age;
    }

  3. 编写测试方法,测试@Data的作用

    @Test
    public void testUser(){
    User user = new User();
    user.setName(“AnyCode”);
    user.setAge(20);
    System.err.println(user.toString());
    }

输入图片说明

lombok的注解介绍

@NonNull : 让你不在担忧并且爱上NullPointerException

@CleanUp : 自动资源管理:不用再在finally中添加资源的close方法

@Setter/@Getter : 自动生成set和get方法

@ToString : 自动生成toString方法

@EqualsAndHashcode : 从对象的字段中生成hashCode和equals的实现

@NoArgsConstructor/@RequiredArgsConstructor/@AllArgsConstructor
自动生成构造方法

@Data : 自动生成set/get方法,toString方法,equals方法,hashCode方法,不带参数的构造方法

@Value : 用于注解final类

@Builder : 产生复杂的构建器api类

@SneakyThrows : 异常处理(谨慎使用)

@Synchronized : 同步方法安全的转化

@Getter(lazy=true) :

@Log : 支持各种logger对象,使用时用对应的注解,如:@Log4j

推荐使用技巧

  • 在 Bean / Entity 类上使用 @Data 注解。
  • 需要使用 Log 对象的地方使用 @Log4j(依项目日志框架决定)。
  • 注意:lombok 的注解不能被继承

IDEA中使用lombok

如果想让lombok生效我们还需要针对idea工具进行插件的安装,下面我们按照顺序打开Idea配置

File > Settings > Plugins > Browse repositories… > 输入lombok,插件就会被自动检索出来,如下图所示:
输入图片说明

我的工具已经安装了该插件,所有在右侧是没有任何按钮的,如果你的工具没有安装该插件,

右侧会有一个绿色的按钮,按钮的内容则是Install,点击安装后重启Idea就可以了。

lombok常用注解详解

  • @EqualsAndHashCode,@ToString :告诉Lombok来生成 equals, hashCode方法,toString方法

    在生成这些方法的时候lombok会使用所有的成员变量。

  • ** @AllArgsConstructor** :会自动创建一个包括所有成员的构造器。
  • @Getter/@Setter: 注解会为每一个标记的成员变量自动生成对应的方法。
  • 用例

    package com.jxlg.lance.springbootcorestudy.lombok;

    import lombok.*;

    /**

    • @author lance(ZYH)
    • @function 测试其他注解
    • @date 2018-03-22 12:27
      */
      @EqualsAndHashCode
      @ToString
      @AllArgsConstructor
      public class Student {
      @Setter
      @Getter
      private String stuName;

      @Setter
      @Getter
      private Integer stuAge;

      @Setter
      @Getter
      private String stuClass;

      @Setter
      @Getter
      private Integer stuNumber;
      }

  • 如果你不想将注解用在全部的成员变量上,而是仅仅部分变量上,那么你可以提供一个指定的哪一个成员变量需要

    自动生成方法的变量。举例: 比如在这里,我们只想让stuName,stuAge两个成员变量出现在 toString 方法里。

    @EqualsAndHashCode
    @ToString(of = {“stuName”,”stuAge”})
    @AllArgsConstructor
    public class Student {

    1. @Setter
    2. @Getter
    3. private String stuName;
    4. @Setter
    5. @Getter
    6. private Integer stuAge;
    7. @Setter
    8. @Getter
    9. private String stuClass;
    10. @Setter
    11. @Getter
    12. private Integer stuNumber;

    }

  • 这些代码已经比我们一开始要好太多了,但是它任然不够简洁。这里重复了大量的 @Getter 和 @Setter 注解。

    如果你只是需要在Class中仅暴露几个字段,那么使用它们非常方便,但如果您需要为所有字段生成访问器,则会变得烦人又无聊。

    为了使代码更加简洁, Lombok永续我们在类级上使用这些注解。如果这些注解放在类名之上,

    那么lombok会自动为我们生成所有字段的访问方法。

    @EqualsAndHashCode
    @ToString
    @AllArgsConstructor
    @Setter
    @Getter
    public class Student {

    1. private String stuName;
    2. private Integer stuAge;
    3. private String stuClass;
    4. private Integer stuNumber;

    }

  • @Buidler :实例化这个类

  • 用例

    @EqualsAndHashCode
    @ToString
    @AllArgsConstructor
    @Setter
    @Getter
    @Builder
    public class Student {

    1. private String stuName;
    2. private Integer stuAge;
    3. private String stuClass;
    4. private Integer stuNumber;

    }

    测试类:
    package com.jxlg.lance.springbootcorestudy.lombok;

    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.junit.runners.JUnit4;

    import static org.junit.Assert.*;

    @RunWith(JUnit4.class)
    public class StudentTest {

    1. @Test
    2. public void test(){
    3. Student student = Student.builder()
    4. .stuName("张三")
    5. .stuAge(12)
    6. .stuClass("高三")
    7. .stuNumber(12222)
    8. .build();
    9. System.out.println(student);
    10. }

    }

    结果:
    Student(stuName=张三, stuAge=12, stuClass=高三, stuNumber=12222)

  • @Data :简单的来说所有所有的注解我们都可以使用一个注解完成.也就是@Data

    我们在定义类的时候 只需要加一个 @Data 注解,其他的注解我们都不需要在添加就可以达到前面所说的所有功能。

  • 通过上面介绍的,我们平常使用Lombok只需要这样就是就可以了,如下:

    @Data
    @Builder
    public class User {

    1. private String name;
    2. private Integer age;

    }

发表评论

表情:
评论列表 (有 0 条评论,269人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SpringBoot 使用Lombok插件

    一、Lombok简介        Lombok 是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具,在我们项目开发中经常使用

    相关 Springboot加入Lombok

    近段时间发现Lombok这个小框架,可以大大的减少实体的代码量,最显而易见的是实体类的getter、setter不用写了,虽然ide也有快捷键来生成,但是毕竟还是需要手动操作,