千家信息网

SpringBoot整合Lombok及常见问题怎么解决

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"SpringBoot整合Lombok及常见问题怎么解决"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"SpringBoot整合Lombok及常
千家信息网最后更新 2026年11月02日SpringBoot整合Lombok及常见问题怎么解决

这篇文章主要介绍"SpringBoot整合Lombok及常见问题怎么解决"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"SpringBoot整合Lombok及常见问题怎么解决"文章能帮助大家解决问题。

Lombok

Lombok能以简单的注解形式来简化java代码,从而提高开发人员的开发效率。其本身是一个优秀的Java代码库,它采用了一种投机取巧的语法糖,简化了Java的编码,为Java代码的精简提供了一种方式,但Lombok并非一个标准的Java库。

在web开发过程中经常需要写的Java类,都需要花时间去添加相应的getter/setter、构造器和equals等方法。当属性多时会出现大量的getter/setter方法,这些显得很冗长也没有太多技术含量,一旦修改属性,容易出现忘记修改对应方法的情况。

官方网站:Project Lombok

1. Lombok常用注解

注解作用
@Data注解在类上;提供类所有属性的 getting 和 setting 方法,还提供了equals、canEqual、hashCode、toString 方法
@Setter注解在属性上;为属性提供 setting 方法
@Setter注解在属性上;为属性提供 getting 方法
@Log4j注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
@NoArgsConstructor注解在类上;为类提供一个无参的构造方法
@AllArgsConstructor注解在类上;为类提供一个全参的构造方法
@Cleanup :关闭流
@Builder被注解的类增加构造者模式
@Synchronized同步锁
@SneakyThrows捕获异常,类似try/catch 捕获异常
@NonNull给参数加个这个注解,当参数为null会抛出空指针异常
@Value注解和@Data类似,默认定义所有成员变量为private final修饰,不生成set方法

2. Lombok注解失效原因

在pom.xml引入Lombok依赖后,还需要安装Lombok插件,重启IDEA才能生效。

整合过程

1. 引入Lombok依赖:

复制如下代码并插入pom.xml当中,等待maven仓库自动下载安装依赖,没有设置自动导包点击手动导入。

                    org.projectlombok            lombok                        1.18.12            provided        

2. 安装Lombok插件

在IDEA中点击File-》Setting-》Plugins-》搜索Lombok安装插件后,重启IDEA;

3. 利用Lombok为属性生成getter/setter等方法程序代码示例

a.未使用Lombok编写实体类(程序肥胖、不好看)

使用IDE自带的快捷键能自动生成getter/setter这些方法:

package com.dvms.entity;/* *文件名: Anglerecord *创建者: CJW *创建时间:2020/6/6 14:40 *描述: 记录 */public class Record {    private String time;    private String device;    private String state;    public Record(String time, String device, String state) {        this.time = time;        this.device = device;        this.state = state;    }    public Record() {    }    public String getTime() {        return this.time;    }    public String getDevice() {        return this.device;    }    public String getState() {        return this.state;    }    public Record setTime(String time) {        this.time = time;        return this;    }    public Record setDevice(String device) {        this.device = device;        return this;    }    public Record setState(String state) {        this.state = state;        return this;    }    public boolean equals(final Object o) {        if (o == this) return true;        if (!(o instanceof Record)) return false;        final Record other = (Record) o;        if (!other.canEqual((Object) this)) return false;        final Object this$time = this.getTime();        final Object other$time = other.getTime();        if (this$time == null ? other$time != null : !this$time.equals(other$time)) return false;        final Object this$device = this.getDevice();        final Object other$device = other.getDevice();        if (this$device == null ? other$device != null : !this$device.equals(other$device)) return false;        final Object this$state = this.getState();        final Object other$state = other.getState();        if (this$state == null ? other$state != null : !this$state.equals(other$state)) return false;        return true;    }    protected boolean canEqual(final Object other) {        return other instanceof Record;    }    public int hashCode() {        final int PRIME = 59;        int result = 1;        final Object $time = this.getTime();        result = result * PRIME + ($time == null ? 43 : $time.hashCode());        final Object $device = this.getDevice();        result = result * PRIME + ($device == null ? 43 : $device.hashCode());        final Object $state = this.getState();        result = result * PRIME + ($state == null ? 43 : $state.hashCode());        return result;    }    public String toString() {        return "Record(time=" + this.getTime() + ", device=" + this.getDevice() + ", state=" + this.getState() + ")";    }}

b.引入Lombok生成方法(程序苗条、看着很舒服)

可自己根据需求手动增添注解,也可以通过右键-》Refactor-》Lomok-》

package com.dvms.entity;/* *文件名: Anglerecord *创建者: CJW *创建时间:2020/6/6 14:40 *描述: 记录 */import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import lombok.ToString;import lombok.experimental.Accessors;@Data@ToString@AllArgsConstructor@NoArgsConstructor@Accessors(chain = true) //链式调用public class Record {    private String time;    private String device;    private String state;}

优点与缺点(可能出现的问题即解决方法)

优点:
Lombok能通过注解的方式,在编译时自动为属性生成getter/setter、equals和toString等方法,省去了手动重建这些代码的麻烦,使程序实体类(entity/pojo)代码看起来更‘苗条’、更有逼格。

缺点(可能出现的问题):
如果是个人开发,可能出现如下问题:

1.Lombok目前支持JDK1.8,升级JDK版本后可能失效,解决方法:
a.通过IDE自带的快捷键Alt+Insert生成getter/setter,equals,hashCode,toString以及构造器等方法;

b.使用DeLombok工具生成上述这些方法,在最新版本中已包含DeLombok。右键选择Refactored->DeLombok:

或者使用一个命令:

java -jar lombok.jar delombok src -d src-delomboked

把 Lombok 注解实现的类文件转换为不使用 Lombok 的 Java 源文件。

2.Lombok隐藏了JavaBean封装的细节,程序看着简洁但是可读性差。此外尽量不要使用使用这个注解@AllArgsConstructor,该注解提供一个巨型构造器,使外界有机会在初始化对象时修改类中所有的属性是非常不安全的,毕竟Java类中对象的某些属性不应被修改。同时,如果某个Java类中有好多个属性,那么Lombok会注入好多个参数的构造器到Java类中,而构造器参数的顺序完全由Lombok所控制。

3.使用Lombok来编写Javabean代码后,其余依赖此javabean的其他代码都需要引入Lombok依赖,代码耦合度上升。同时,还需要在IDE中安装Lombok的插件。

4.如果是协同开发,则需要注意如下问题:
当我们的程序代码中引入了Lombok插件,其他人也必须去下载、引入Lombok插件,否则Java代码可能无法正常运行。

关于"SpringBoot整合Lombok及常见问题怎么解决"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

方法 注解 属性 代码 问题 生成 插件 程序 构造器 开发 整合 参数 常见 常见问题 对象 手动 文件 时间 知识 过程 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳九邦互联网科技有限公司 互联网金融监管科技数据 盈实互联网科技 苏州互联网科技贷款公司 奇士达互联网科技 卫星互联网科技股票 江苏南京365互联网科技 江阴互联网智能科技产品进口 电子科技大学互联网创业大赛 互联网科技研发水平 银川新华互联网科技学校联系电话 互联网科技人工智能实验室 互联网新科技动漫ppt素材 迪庆互联网科技招生 互联网科技的全部知识 伍佰万互联网科技怎么赚钱 全球科技与互联网公司市值变化 互联网公司属于科技吗 现代科技的标志之一的互联网 互联网科技企业文化 天津市摩尔互联网科技 喔噻互联网科技 奇酷互联网科技公司 伴你行互联网科技有限公司 科技大学互联网专业好不好 卫星互联网科技股票 隆华科技工业互联网 智腾互联网科技有限公司 艺电能源互联网科技有限公司招聘 山东蛋芒互联网科技有限公司
0