当前位置: 首页 > news >正文

Lombok 的安装与使用

文章目录

  • 一、什么是 Lombok
    • 1.1 Lombok 的概念
    • 1.2 为什么使用 Lombok
    • 1.3 Lombok 的相关注解
  • 二、Lombok 的安装
    • 2.1 引入依赖
    • 2.2 安装插件
  • 三、Lombok 的使用案例
  • 四、Lombok 的原理


一、什么是 Lombok

1.1 Lombok 的概念

Lombok(“Project Lombok”)是一款针对 Java 开发的实用工具库。它通过使用注解自动生成 Java 类的通用代码,从而简化了 Java 代码的编写过程。Lombok 的目标是减少样板代码(boilerplate code),提高代码的简洁性和可读性

1.2 为什么使用 Lombok

在传统的 Java 开发中,常常需要为 Java 类编写大量的 gettersetter 方法、equalshashCode方法、toString方法等通用的代码,这些代码在大多数情况下都是重复且无趣的。而使用 Lombok,可以通过简单的注解在Java类上,自动生成这些通用代码,从而避免了重复劳动。

1.3 Lombok 的相关注解

下面是常用的 Lombok 注解:

注解说明
@Data自动生成 gettersetterequalshashCodetoString 方法。
@Getter自动生成 getter 方法。
@Setter自动生成 setter 方法。
@ToString自动生成 toString 方法。
@EqualsAndHashCode自动生成 equalshashCode 方法。
@NoArgsConstructor自动生成无参构造函数。
@RequiredArgsConstructor自动生成带有 @NonNull 注解的成员变量的构造函数。
@AllArgsConstructor自动生成包含所有成员变量的构造函数。
@Builder自动生成建造者模式的构建方法。
@Slf4j自动生成 log 日志对象。
@Value类似于 @Data,但生成的类是不可变的(immutable)。
@Cleanup自动生成资源(如流)的关闭代码。
@SneakyThrows自动生成异常抛出代码,用于把受检异常转换为非受检异常。
@NonNull为成员变量标记非空约束,自动生成空值检查代码。
@Getter(AccessLevel.NONE)取消生成 getter 方法。
@Setter(AccessLevel.NONE)取消生成 setter 方法。
@NoArgsConstructor(access = AccessLevel.PRIVATE)生成私有的无参构造函数。

以上是常用的一些 Lombok 注解及其说明,通过使用这些注解,可以简化 Java 类的编写,减少样板代码,提高代码的简洁性和可读性。需要根据实际情况选择合适的注解,以便在项目中获得更好的开发体验。

二、Lombok 的安装

2.1 引入依赖

可以通过 Lombok的官网:https://projectlombok.org/ 获取依赖:

如果是 Maven 项目,选择Install中的Build tools,点击maven 进行复制,然后粘贴到 pom.xml 中的 <dependencies> 里面即可;当然,在创建 Spring Boot 项目时,也可以直接在创建的时候选择 Lombok 依赖。

2.2 安装插件

在 IDEA 中,如果想要在使用时提示相应的注解,还需要安装 Lombok Builder Helper 插件:

三、Lombok 的使用案例

创建了一个使用 Lombok 注解的User类:

@Component
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class User {private Integer id;private String name;private Integer age;
}

通过 TestController类获取 User 对象,并对其执行操作:

@Controller
@ResponseBody
public class TestController {@Autowiredprivate User user;@RequestMapping("/test")public void test(){System.out.println(user);System.out.println("===================");user.setId(123);user.setName("张三");user.setAge(18);System.out.println("===================");System.out.println(user);}
}

执行结果:

四、Lombok 的原理

Lombok 的原理主要依赖于 Java 的注解处理器(Annotation Processor)。在编译 Java 源代码的过程中,注解处理器会读取源代码中的Lombok 注解,并根据注解的定义自动生成相应的 Java 代码,然后将这些生成的代码插入到编译结果中,最终生成编译后的 class 文件

具体来说,Lombok的原理如下:

  1. 注解的识别:在编译 Java 源代码的过程中,注解处理器会扫描源代码中的 Lombok 注解,如@Getter@Setter@NoArgsConstructor等。

  2. 解析注解:一旦发现 Lombok 注解,注解处理器会解析该注解的定义,并确定生成代码的内容,例如生成 gettersetter 方法,构造函数等。

  3. 生成代码:根据注解的定义,注解处理器会生成对应的 Java 代码片段,比如生成 getter 方法的代码,setter 方法的代码,构造函数的代码等。

  4. 插入生成的代码:注解处理器将生成的代码插入到源代码中相应的位置。

  5. 编译:在生成了包含 Lombok 生成的代码的新的 Java 源代码之后,编译器会继续将新的源代码编译成字节码文件(.class文件)。

  6. 最终结果:最终生成的class文件包含了Lombok生成的代码,这样在运行时,就能够使用Lombok自动生成的方法和构造函数等功能。

例如,在编译 User 类前的代码如下:


编译后查看 target 目录下 User 对应的 .class 文件:


此时可以发现自动生成了各种 settergetter 和构造方法等。并且与 Lombok 相关的注解也消失了。

http://www.lryc.cn/news/111799.html

相关文章:

  • springBean生命周期解析
  • 人工智能轨道交通行业周刊-第54期(2023.7.31-8.6)
  • Docker Compose 使用方法
  • HTML 初
  • IPv6地址分类,EUI-64转换规则
  • Nginx安装部署
  • 物联网|按键实验---学习I/O的输入及中断的编程|读取I/O的输入信号|中断的编程方法|轮询实现按键捕获实验-学习笔记(13)
  • Hadoop-HDFS的Namenode及Datanode(参考Hadoop官网)
  • C:通过alarm发送信号
  • 如何将 dubbo filter 拦截器原理运用到日志拦截器中?
  • 【java】【maven】【基础】MAVEN安装配置介绍
  • 【C语言进阶】指针的高级应用(下)
  • 【uniapp APP隐藏顶部的电量,无线,时间状态栏与导航栏】
  • 微信小程序前后页面传值
  • 没有jodatime,rust里怎么比较两个日期(时间)的大小呢?
  • 【雕爷学编程】Arduino动手做(186)---WeMos ESP32开发板18
  • C语言假期作业 DAY 14
  • Maven-生命周期及命令
  • 常温超导:AI在研发中的潜力
  • 【C++】开源:Eigen3矩阵与线性代数库配置使用
  • OpenMesh 网格简化算法(基于边长度)
  • FFmpeg解码详细流程
  • 人工智能的缺陷
  • 基于ASP.NET MVC开发的、开源的个人博客系统
  • 【LeetCode】对称二叉树 平衡二叉树
  • 区块链和WEB3.0有哪些基础知识呢
  • 七、封装(1)
  • 问题解决和批判性思维是软件工程的重要核心
  • 【EI/SCOPUS征稿】2023年通信网络与机器学习国际学术会议(CNML 2023)
  • 算法-岛屿数量