SpringBoot整合Lombok

1. Pom 文件引入 Lombok

在pom中添加如下所示的内容:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

2. 添加 Lombok 插件

在IDEA中搜索插件,并安装。如下图所示:


3. Lombok介绍

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 的注解不能被继承。

4. 使用

具体的使用方式如下:

// @Accessors(chain=true) :链式访问,该注解设置chain=true,生成setter方法返回this,代替了默认的返回void。

@Data
@Accessors(chain=true)
public class User {
    private Integer id;
    private String name;
    private Integer age;
    public static void main(String[] args) {
        User user=new User().setAge(31).setName("pollyduan");
        System.out.println(user);
    }
}

// @Accessors(fluent = true) :与chain=true类似,区别在于getter和setter不带set和get前缀。

@Data
@Accessors(chain=true)
public class User {
    private Integer id;
    private String name;
    private Integer age;
    public static void main(String[] args) {
        User user=new User().age(31).name("pollyduan");
        System.out.println(user);
    }
}

下面是实体类的测试:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private String salt;
    private Integer id;
    private String name;
    private String password;
}
//这里就可以直接使用get,set,toString(),HashCode(),无参,全参数等

调用如下:

    @RequestMapping("/getUserById/{id}")
    @ResponseBody
    public User findById( @PathVariable String id){
        User user = new User();
        user.setId(Integer.parseInt(id));
        user.setUsername("syw");
        user.setPassword("666");
        System.out.println(user);
        User user2=new User(123,"yyy","sss","666");
        System.out.println(user2);
        return user;
    }

结果如下

综上所述,Lombok解决了我们实体Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不会用到,但是某些时候仍然需要复写,以期方便使用的方法;在使用Lombok之后,将由其来自动帮你实现代码生成,注意,其是 在运行过程中,自动生成的。就是说,将极大减少你的代码总量,但具体的使用还需要看所在项目中是不是所有人都是用了,如果单独使用的话,可能会造成在其他人的电脑中无法访问的情况。

全部评论