从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 新闻合订本
    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 新闻合订本
    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • JavaSE

  • JavaSenior

  • JavaEE

  • JavaWeb

  • Spring

  • 主流框架

    • Redis

    • Mybatis

    • Lucene

    • Elasticsearch

    • MQ

    • MyCat

    • Lombok

      • Lombok 简介
        • 新建项目
        • 使用 Lombok 之前
        • 什么是 Lombok
        • 引入依赖
        • 安装 Lombok 插件
        • 新建 User2 类
        • 测试
        • 最后
      • Lombok 常用注解
      • 深入 Lombok
  • SpringMVC

  • SpringBoot

  • Java
  • 主流框架
  • Lombok
2023-07-11
目录

Lombok 简介

# 0.Lombok 简介

简单介绍下 Lombok

‍

# 新建项目

为了方便演示,我们新建一个 Maven 项目,骨架使用 quickstart

‍

# 使用 Lombok 之前

举个例子,我们写一个 User 类的 JavaBean,成员变量有 3 个:

package com.peterjxl;

public class User {
    private String name;
    private String email;
    private String password;
}
1
2
3
4
5
6
7

‍ 然后,我们需要给这个 JavaBean 加上这些方法:

  • getter
  • setter
  • 各种构造方法
  • equals
  • hashcode
  • toString
  • 非空判断
  • ..............

例如:

package com.peterjxl;

import java.util.Objects;

public class User {
    private String name;
    private String email;
    private String password;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        return Objects.equals(name, user.name) && Objects.equals(email, user.email) && Objects.equals(password, user.password);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, email, password);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

‍ 可以看到,其实几乎每个 JavaBean 的 getter、setter、构造方法等方法,都是几乎一样的,但是又必须得有;因为按照 OOP 的思想,成员变量必须得是 private,因此得有 setter 和 getter(而且 Spring 等框架有时也会用到这些方法)。

这是一种重复:每个 JavaBean 都有的重复代码,能不能简化呢?例如,我在类上加一个注解,就自动生成 getter、setter 方法呢?

因此,Lombok 出现了

# 什么是 Lombok

官网 (opens new window) 是这样介绍的:

‍

Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.

Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.

大意:Lombok 是一个 Java 库,能集成进大部分的 IDE 和构建工具,为你的 Java 锦上添花

不用再写 getter 和 equals 方法了,只需一个注解,你的类就能自动生成这些方法,还能自动插入 log 成员等,功能很多。

动手实践下吧!

‍

# 引入依赖

以 Maven 依赖为例:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
    <scope>provided</scope>
</dependency>
1
2
3
4
5
6

‍ 除了 Maven,还支持 Ant,Gradle 等方式引入,具体引入方法看 官网 (opens new window) 文档:

‍

# 安装 Lombok 插件

要在 IDE 中,安装相关的插件,才能正常编译和运行(支持的 IDE 看上图)。

以 IDEA 为例(版本 2023.1),默认已经捆安装了 Lombok 插件:

‍

如果发现没有安装,安装步骤如下:

  • 点击 File > Settings > Plugins 进入插件管理页面
  • 点击 Browse repositories...
  • 搜索 Lombok Plugin
  • 点击 Install plugin 安装插件
  • 重启 IntelliJ IDEA ‍

# 新建 User2 类

为了和之前的类区分,我们复制一个 User 类:

package com.peterjxl;

public class User2 {
    private String name;
    private String email;
    private String password;
}
1
2
3
4
5
6
7

‍ 然后加上 Lombok 的注解:@Setter 和@Getter

package com.peterjxl;


import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class User2 {
    private String name;
    private String email;
    private String password;
}
1
2
3
4
5
6
7
8
9
10
11
12
13

加上这两个注解后,就会自动生成 setter 和 getter 方法,简化了大量的 setter 和 getter 方法。 ‍

# 测试

最后,我们测试下能否正常使用。新建一个类,并调用 setter 和 getter 方法:

package com.peterjxl;

public class TestMain {

    public static void main(String[] args) {
        User user = new User();
        user.setName("Peter");

        User2 user2 = new User2();
        user2.setName("Peter2");

        System.out.println(user.getName());
        System.out.println(user2.getName());

    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

‍ 运行结果:

Peter
Peter2
1
2

‍ 可以看到,能正常调用 setter 和 getter 方法。下一篇,我们讲解更多关于 Lombok 的用法 ‍

# 最后

除此之外,Lombok 还是开源的,GitHub 地址:github.com/projectlombok/lombok (opens new window)

已将本文源码上传到 Gitee (opens new window) 或 GitHub (opens new window) 的分支 demo1,读者可以通过切换分支来查看本文的示例代码 ‍

上次更新: 2025/6/3 09:31:54
Mycat2-UI
Lombok 常用注解

← Mycat2-UI Lombok 常用注解→

最近更新
01
新闻合订本 2025-10
10-31
02
2025 年 10 月记
10-30
03
用 AI 批量优化思源笔记排版
10-15
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式