SpringBoot整合lombok省略set和get方法

一、lombok概述

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

作用:

  • 为Java POJO生成属性对应的getter,setter等
  • 为Java POJO生成builder构造器模式的实现
  • 为Java类自动添加其他重复性代码,比如日志记录的声明代码可以通过@Slf4j注解添加

二、使用过lombok

1. 添加依赖

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

2. Idea安装lombok插件

如果想让lombok生效我们还需要针对idea工具进行插件的安装。

3. 编写一个实体类 User,使用@Data注解

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

注意:lombok 的注解不能被继承。

4. 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) :懒加载。如果Bean的一个字段的初始化是代价比较高的操作,比如加载大量的数据;同时这个字段并不是必定使用的。那么使用懒加载机制,可以保证节省资源。懒加载机制,是对象初始化时,该字段并不会真正的初始化;而是第一次访问该字段时才进行初始化字段的操作。
  • @Log : 支持各种logger对象,使用时用对应的注解,如:@Log4j

5. 常用注解

(1) @EqualsAndHashCode,@ToString 

告诉Lombok来生成 equals, hashCode方法,toString方法在生成这些方法的时候lombok会使用所有的成员变量。

(2) @AllArgsConstructor

会自动创建一个包括所有成员的构造器。

(3) @Getter/@Setter

注解会为每一个标记的成员变量自动生成对应的方法。

(4) @Buidler

实例化这个类。

@EqualsAndHashCode
@ToString
@AllArgsConstructor
@Setter
@Getter
@Builder
public class Student {
    private String stuName;

    private Integer stuAge;

    private String stuClass;

    private Integer stuNumber;
}

可以这样实例化:

Student student = Student.builder()
      .stuName("张三")
      .stuAge(12)
      .stuClass("高三")
      .stuNumber(12222)
      .build();
System.out.println(student);

(5) @Data

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

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

参考:https://www.cnblogs.com/zhangyinhua/p/8623018.html

原文地址:https://www.cnblogs.com/myitnews/p/12386333.html