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

Lombok 介绍

Lombok 是一个 Java 工具库,通过添加注解的方式,可以帮助我们消除一些冗长代码,使代码看起来简洁一些,简化 Java 的开发

引入依赖

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

@Data 注解会帮助我们自动生成⼀些方法, 包含getter/setter, equals, toString等

原理解释

有这样一个实体类

import lombok.Data;@Data
public class Student {private String name;private int age;
}

可以观察加了 @Data 注解之后的class文件

在target -> classes 中找到对应的 class文件,发现注解消失了,但代码会填充成这样

import lombok.Generated;public class Student {private String name;private int age;@Generatedpublic Student() {}@Generatedpublic String getName() {return this.name;}@Generatedpublic int getAge() {return this.age;}@Generatedpublic void setName(final String name) {this.name = name;}@Generatedpublic void setAge(final int age) {this.age = age;}@Generatedpublic boolean equals(final Object o) {if (o == this) {return true;} else if (!(o instanceof Student)) {return false;} else {Student other = (Student)o;if (!other.canEqual(this)) {return false;} else if (this.getAge() != other.getAge()) {return false;} else {Object this$name = this.getName();Object other$name = other.getName();if (this$name == null) {if (other$name != null) {return false;}} else if (!this$name.equals(other$name)) {return false;}return true;}}}@Generatedprotected boolean canEqual(final Object other) {return other instanceof Student;}@Generatedpublic int hashCode() {int PRIME = true;int result = 1;result = result * 59 + this.getAge();Object $name = this.getName();result = result * 59 + ($name == null ? 43 : $name.hashCode());return result;}@Generatedpublic String toString() {String var10000 = this.getName();return "Student(name=" + var10000 + ", age=" + this.getAge() + ")";}
}

在这里插入图片描述
可以看出来, Lombok是一款在编译期生成代码的工具包

Java 程序的运行原理:


在这里插入图片描述

使用lombok如下图所示:

在这里插入图片描述

如果觉得 @Data 生成方法太多了,lombok 也提供了一些更精细粒度的注解

注解作用
@Getter自动添加 getter 方法
@Setter自动添加 setter 方法
@ToString自动添加 toString 方法
@EqualsAndHashCode自动添加 equals 和 hashCode 方法
@NoArgsConstructor自动添加无参构造方法
@AllArgsConstructor自动添加全属性构造方法,顺序按照属性的定义顺序
@NonNull属性不能为 null
@RequiredArgsConstructor自动添加必需属性的构造方法,final + @NonNull 的属性为必需

@Data = @Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor + @NoArgsConstructor

更快捷的引入依赖

上述引入 lombok 依赖,需要去找 lombok 的坐标。接下来介绍更简单引入依赖的方式

安装 EditStarters 插件, 重启 Idea

在这里插入图片描述
在 pom.xml 文件中,单击右键,选择 Generate, 操作如下图所示:

在这里插入图片描述

进入 Edit Starters 的编辑界面,添加对应依赖即可

在这里插入图片描述

不是所有依赖都可以在这里添加,这个界面和 Spring Boot 创建项目的界面一样。如果依赖不在这里的,还需要去 Maven 仓库查找坐标,添加依赖

相关文章:

  • 33-Oracle Parallel 并行处理的选择和实践
  • 31-Oracle 23 ai-Unrestrict Parallel DML(无限制并行DML)
  • SAP复制一个自定义移动类型
  • 篇章七 论坛系统——业务开发——前端
  • Python 中的 `lru_cache` 详解
  • 掌握应用分层:高内聚低耦合的艺术
  • Python with 关键字
  • 【FineDance】ModuleNotFoundError: No module named ‘pytorch3d‘
  • 数据目录:企业数据管理的核心引擎与最佳实践
  • Linux02
  • Linux Docker的环境配置与简单使用
  • 【Day48】
  • Docker 在尝试连接 Docker Hub 时遇到网络问题(超时)
  • 27 - ASPP模块
  • TI 毫米波雷达走读系列—— 3DFFT及测角
  • 疫菌QBD案例
  • Spring-rabbit重试消费源码分析
  • 低温对MOSFET的影响
  • SpringBoot打包运行原理和加载机制原理
  • 篇章六 论坛系统——业务开发——实现业务功能
  • 商城网站制作/广州网站优化运营
  • 代理龙华网站建设/网站建设推广服务
  • 网站建设素材/营销推广活动方案
  • 网站建设销售兼职合同/创意营销新点子
  • 站长统计向日葵app下载/关键词下载
  • 做网站链接/深圳网络运营推广公司