SpringBoot之整合Lombok及所遇问题

目录

SpringBoot整合Lombok

前言:

IDEA中集成 Lombok Plug 插件:

快速上手:

Lombok常用注解:

遇见问题:


前言:

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

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醋黄瓜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值