目录
前言:
Lombok想要解决了的是在我们实体Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不会用到,但是某些时候仍然需要复写,以期方便使用的方法;在使用Lombok之后,将由其来自动帮你实现代码生成,注意,其是在运行过程中,帮你自动生成的,减少代码量。
IDEA中集成 Lombok Plug 插件:
1、在IDEA中ctrl + alt + s 打开settings 设置 --> Plugs -- > Browse repositories
2、在搜索栏输入Lombok找到下面插件 Install 安装重启就好;我这是安装过的所以是update
快速上手:
1、在pom.xml中添加依赖
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
2、实体类中应用:
import lombok.Data;
@Data
public class userDo {
private static final long serialVersionUID = 2639666644065038323L;
/**
* 账号
*/
private String account;
/**
* 密码
*/
private String password;
}
Lombok常用注解:
@Data | 自动生成set/get方法,toString方法,equals方法,hashCode方法,不带参数的构造方法 |
@Getter/@Setter | 自动生成set和get方法 |
@ToString | 自动生成toString方法 |
@Build | 产生复杂的构建器api类 |
@NonNull | 让你不在担忧并且爱上NullPointerException |
@CleanUp | 自动资源管理:不用再在finally中添加资源的close方法 |
@EqualsAndHashcode | 从对象的字段中生成hashCode和equals的实现 |
@NoArgsConstructor/@RequiredArgsConstructor/@AllArgsConstructor | 自动生成构造方法 |
@Value | 用于注解final类 |
@SneakyThrows | 异常处理(谨慎使用) |
@Synchronized | 同步方法安全的转化 |
@Log | 支持各种logger对象,使用时用对应的注解,如:@Log4j |
注意:
- lombok 的注解不能被继承。
- 项目团队开发中只要有一人使用Lombok其它人项目也许使用保持一致
遇见问题:
问题1:
当实体类继承了一个父类,IDEA中@Data 会提示Generating equals/hashCode implementation but without a call to superclass
原因:
该注解在实现 ToString EqualsAndHashCode 方法时,不会考虑父类的属性,通过反编译的源码也是可以看到他是没有对父类的字段进行比较的
解决方法:
一、直接在子类上声明 @EqualsAndHashCode(callSuper = true)
二、在根目录下与Application.class启动类同级下创建lombok.config 配置文件:
lombok.config配置:
config.stopBubbling=true
lombok.equalsAndHashCode.callSuper=call
配置说明:
config.stopBubbling=true:
该配置声明这个配置文件是一个根配置文件,他会从该配置文件所在的目录开始扫描
lombok.equalsAndHashCode.callSuper=call:
全局配置 equalsAndHashCode 的 callSuper 属性为true,这样就不用每个类都要去写了
问题2:
1、启动项目后浏览器打开swagger文档首页控制台报:
AbstractSerializableParameter : Illegal DefaultValue null for parameter type integer
解决方案:
1、部分文章说在原因为实体类的 Integer 属性的 @ApiModelProperty 注解需添加参数 example 指定一个字符数子,
例:
@ApiModelProperty(value = "类型:0 否,1是",example = "1") private Integer status;
在本测试例中并作用,重启后控制台仍然报警告
2、本测试中swagger的版本为2.92在pom.xml依赖中添加依赖:
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.22</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.5.22</version>
</dependency>
再次启动ok