Spring lombok 使用之 bean final 属性和调用有参构造器报错

2020-10-21T13:54:00

Lombok 提供了一些非常棒的库,这些库可以在运行时动态生成常见的 getter 和 setter 方法,以及 equals()、hashCode()、toString()等方法,还可以生成所有以 final 属性作为参数的构造器。主要作用就是简化开发人员工作,简化代码。

使用 Lombok 需要两步:第一步是将 Lombok 添加到 Spring pom.xml 依赖中;第二步是给使用的 IDE 工具安装 Lombok。

添加 Lombok 到 Spring pom.xml 依赖中

我用的 IDE 是 eclispe for enterprise java,在 pom.xml 文件中右击菜单,选择 Spring -> Add Starters,弹出新建 Spring Starter 项目依赖的页面,在输入框中搜索 Lombok,然后勾选 下方找到的 Lombok,next 之后选择更新的文件,勾选 pom.xml,点击 finish 完成即可。这算是一个快捷添加依赖的方式,当然也可以手动在 pom.xml 中插入以下的依赖项,效果一样:

<dependencies>
...
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
...
</dependencies>

[notice]在 pom.xml 中右击菜单不存在 Spring -> Add Starters ?这是因为 IDE 没有安装 Spring Tools。在 Help 菜单栏 Eclipse Marketplace 中搜索 Spring tools,点击安装最新版本即可(我安装的是 Spring tools 4)。[/notice]

在完成了第一步之后,如果直接去撸代码(案例代码来自《Spring 实战 5》):

package tacos;

import lombok.Data;
import lombok.RequiredArgsConstructor;

@Data
@RequiredArgsConstructor
public class Ingredient {

    private final String id;
    private final String name;
    private final Type type;
    
    public static enum Type {
        WRAP, PROTEIN, VEGGIES, CHEESE, SAUSE
    }
}

可以想象是绝对会各种报错的,final 属性没有初始化,未定义有参构造函数...

给使用的 IDE 工具安装 Lombok

Lombok 并非 Spring 库,在 Eclipse Marketplace 中也找不到可以直接安装的扩展。需要结合 Lombok 官网 上的文档来安装。

我找到了 eclipse 安装 Lombok 的教程,其中介绍了两种安装 Lombok 的方法。

方法一,也就是网上出了最多教程的方法,通过双击 lombok.jar 包进行安装。可以从官网下载,也可以直接从本地 maven 库中找到,这两个是同一个 jar 包。官网下载比较慢,所以完全可以直接使用本地下载好的 jar 包。

在双击 lombok.jar 弹出框里,会自动搜索系统中的 eclipse 可执行文件,直接点击 install/update 即可安装成功。

如果双击没有自动打开(没有配置 Java 路径或者系统未自动识别),可以在命令行里执行。切换到 lombok.jar 目录下,java -jar lombok.jar

方法二,使用 Eclipse 的插件安装工具。Help 菜单中 Install New Software,添加网址 https://projectlombok.org/p2,选择 Lombok,之后按照引导安装依赖即可。这个方法没试过,但想必官网应该不会无的放矢的。

通过方法一安装了 Lombok 之后,重启 eclipse 发现报错仍然存在。

网上有教程说如果当前项目为 Spring Boot 项目,需要修改 eclipse.ini 配置文件。将原有的 -javaagent:D:\eclipse\lombok.jar(lombok 安装路径)修改为:

-Xbootclasspath/a:lombok.jar
-javaagent:lombok.jar

经测试无效,eclipse 会启动失败。

其他教程中提到需要使用 maven 更新项目依赖包。右击项目菜单选择 maven -> update project,点击确定,更新之后报错提示消失。

所以问题的根源在于,更新了 pom.xml 项目依赖,但并没有使用 maven 更新项目。不清楚问题的原理,有知道的童鞋欢迎留言指导。

当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »