【Spring实战】04 Lombok集成及常用注解

news2025/1/14 1:20:48

文章目录

    • 0. 集成
    • 1. @Data
    • 2. @Getter 和 @Setter
    • 3. @NoArgsConstructor,@AllArgsConstructor和@RequiredArgsConstructor
    • 4. @ToString
    • 5. @EqualsAndHashCode
    • 6. @NonNull
    • 7. @Builder
    • 总结

Lombok 是一款 Java 开发的工具,它通过注解的方式简化了 Java 代码的编写,减少了一大堆样板代码,提高了代码的可读性和可维护性。在本博客中,我们将介绍 Lombok 中的一些常用注解及其用法。

0. 集成

1)Maven 依赖

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

当然也可以使用其他方式,如 Gradle 或者 jar 包等等其他方式

2)安装 idea 插件

在这里插入图片描述

常用的注解:
在这里插入图片描述

1. @Data

它是 Lombok 提供的一个组合注解,它包含了 @Getter@Setter@ToString@EqualsAndHashCode@RequiredArgsConstructor 的功能。使用 @Data 注解可以在类上一次性生成这几个常用的方法,减少了手动书写这些方法的工作量。

官方是这样简述的

在这里插入图片描述

使用方法:

@Data
public class User {
    private Integer id;
    private String name;
    private Integer age;
}

2. @Getter 和 @Setter

它用于自动生成类的 getter 和 setter 方法。

官方是这样简述的

在这里插入图片描述

使用方法:

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

或者写在字段上

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

3. @NoArgsConstructor,@AllArgsConstructor和@RequiredArgsConstructor

  • @NoArgsConstructor: 自动生成无参构造方法。
  • @AllArgsConstructor: 自动生成包含所有字段的构造方法。
  • @RequiredArgsConstructor: 自动生成包含 final 或被 @NonNull 注解修饰的字段的构造方法。

官方是这样简述的

在这里插入图片描述

使用方法:

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

4. @ToString

@ToString 注解自动生成 toString 方法。

官方是这样简述的

在这里插入图片描述

使用方法:

@ToString
public class User {
    private Integer id;
    private String name;
    private Integer age;
}

也可以使用 @ToString(exclude = "id") 指定不在 toString 方法中包含 id 字段。

5. @EqualsAndHashCode

@EqualsAndHashCode 注解生成 equalshashCode 方法。

官方是这样简述的

在这里插入图片描述

使用方法:

@EqualsAndHashCode
public class User {
    private Integer id;
    private String name;
    private Integer age;
}

也可以使用 @EqualsAndHashCode(of = "id") 指定仅包含 id 字段用于生成 equalshashCode 方法。

6. @NonNull

@NonNull 注解用于标记字段为非空,生成相应的 null 检查和抛出 NullPointerException 的代码。

使用方法:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    @NonNull
    private Integer id;
    private String name;
    private Integer age;
}

代码中的 @NonNull 注解表示 id 字段不能为空,生成了相应的 null 检查。

7. @Builder

@Builder 注解用于生成 Builder 模式的代码,方便创建对象时进行链式调用。

官方是这样简述的

在这里插入图片描述

使用方法:

@Builder
public class User {
    private Integer id;
    private String name;
    private Integer age;
}

上述代码中,使用 @Builder 注解后,可以通过 User.builder().id(1).name("cheney").age(18).build() 创建 User 对象。

总结

以上是一些常用的 Lombok 注解及其用法。Lombok 提供了许多其他有用的注解,可以根据实际需求选择使用。使用 Lombok 可以有效地减少冗长的代码,提高代码的清晰度和可读性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1331991.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

INFINI Gateway 如何防止大跨度查询

背景 业务每天生成一个日期后缀的索引&#xff0c;写入当日数据。 业务查询有时会查询好多天的数据&#xff0c;导致负载告警。 现在想对查询进行限制–只允许查询一天的数据&#xff08;不限定是哪天&#xff09;&#xff0c;如果想查询多天的数据就走申请。 技术分析 在每…

面试题:JVM 对锁都进行了哪些优化?

文章目录 锁优化自旋锁和自适应自旋锁消除锁粗化逃逸分析方法逃逸线程逃逸通过逃逸分析&#xff0c;编译器对代码的优化 锁优化 jvm 在加锁的过程中&#xff0c;会采用自旋、自适应、锁消除、锁粗化等优化手段来提升代码执行效率。 自旋锁和自适应自旋 现在大多的处理器都是…

OpenSource - SCM服务管理平台

文章目录 官方网址文档下载版本功能解决了哪些问题使用对象优势Linxu版本scm-dev deb服务列表 Windows版本scm-dev 服务列表scm-all 服务列表scm-jdk 服务列表scm-springboot 精简版本服务列表scm-springboot 服务列表scm-tomcat 服务列表 SCM 截图 官方网址 https://scm.chus…

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《计及风电不确定性的多场景多时段安全约束机组组合解耦求解方法》

这个标题涉及到一种解决在能源系统中考虑风电不确定性的方法。让我们逐步分解这个标题&#xff0c;以便更好地理解其含义&#xff1a; 计及风电不确定性&#xff1a; 这指的是在能源系统中&#xff0c;风力发电的产出具有不确定性。因为风速是难以预测的&#xff0c;风力发电的…

SpringBoot 3 集成Hive 3

前提条件: 运行环境&#xff1a;Hadoop 3.* Hive 3.* MySQL 8 &#xff0c;如果还未安装相关环境&#xff0c;请参考&#xff1a;Hive 一文读懂 Centos7 安装Hadoop3 单机版本&#xff08;伪分布式版本&#xff09; SpringBoot 2 集成Hive 3 pom.xml <?xml ver…

Yestar成都艺星舒适热玛吉星品沙龙会在蓉成功发布

12月21日&#xff0c;由Yestar成都艺星联合索塔医疗联合举办的“舒适无痛热玛吉星品沙龙会”在院内圆满举行&#xff0c;索塔医疗西区大客户经理肖峰、中国临床事业部刘颖&#xff0c;成都艺星运营部长程燕佳&#xff0c;皮肤科院长朱紫婷、技术院长杨海皎、主任王小琴&#xf…

小程序radio单选框回显

话不多说&#xff0c;效果图如下&#xff1a; 具体代码如下&#xff1a; <radio-group name"radio" bindchange"getSex"><label><radio value"1" checked"{{xingbie1}}" />男</label><label><radio…

3D数字化系统建设

以3D可视化、数字化技术为基础&#xff0c;其实&#xff0c;很多传统的系统软件都可以重新做一下。 比如&#xff1a;以下这个使用场景&#xff1a;零售门店陈列&#xff1b; 还有&#xff0c;数字化仓储系统&#xff0c;3D数字化供应链系统&#xff0c;3D数字化的生产系统&a…

网络首发:MTF-CNN-Attention故障识别: 基于马尔可夫场(MTF)和卷积网络(CNN)融合注意力机制的故障识别程序

适用平台&#xff1a;Matlab2023版本及以上 本程序参考中文EI期刊《电网技术》网络首发文献&#xff1a;《基于马尔可夫转换场与多头注意力机制的电能质量扰动分类方法》&#xff0c;程序注释清晰&#xff0c;干货满满&#xff0c;下面对文章和程序做简要介绍&#xff01; 文献…

实验三:路由器的管理与配置

实验目的&#xff1a; 了解路由器的作用熟悉路由器的基本配置方法熟悉Packet Tracer 路由模拟软件的使用 实验环境&#xff1a; Windows 10 下的 Cisco Packet Tracer 实验内容&#xff1a; 熟悉Packet Tracer组件搭建实验拓扑 实验步骤&#xff1a; 1.连接设备 2.配置IP地…

柯桥外语学习-俄语零基础入门教学之与衣服有关的词汇

本期为大家带来的是与衣物有关的相关词汇&#xff01; 最近全国大范围降温&#xff0c;大家一定要关注天气预告及时增减衣物&#xff0c;小心不要感冒啦~ 一、服装组成部分 领子 воротник 方领 квадрадный воротник 圆领 закругленн…

数据孤岛:一场数据的独立战争

在当今数字化的时代&#xff0c;数据已成为企业和组织最宝贵的资产之一。然而&#xff0c;尽管数据的价值被广泛认可&#xff0c;但数据的分散和孤立问题却仍然存在&#xff0c;这就是所谓的数据孤岛。本文将重点分析什么是数据孤岛、数据孤岛的危害以及解决数据孤岛的传统和创…

前端工程注入版本号

文章目录 一、前言二、webpack三、vite四、最后 一、前言 容器化时代&#xff0c;当页面出现问题时&#xff0c;如果你的新版本有可能已经修复了&#xff0c;那样你再排查它就没有意义了。为什么不一定是最新版本呢&#xff1f;一是可能是缓存作祟&#xff0c;二是可能运维成员…

【DWJ_1703225514】基于Sklearn航空公司服务质量分析

【Talk is cheap】 # 导入库 import warnings warnings.filterwarnings(ignore)import pandas as pd import seaborn as sns import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False %matplotlib inlinefrom skl…

计算机网络-网络层

计算机网络-网络层 以下笔记整理为哔哩哔哩湖科大教书匠的《计算机网络微课堂》的教学视频。 链接&#xff1a;计算机网络微课堂 1. 网络层概述 1.1 网络层的主要任务是实现网络互联&#xff0c;进而实现数据包在各网络之间的传输。 1.2 要实现网络层任务&#xff0c;需要解决…

PHP函数定义和分类

函数的含义和定义格式 在PHP中&#xff0c;允许程序员将常用的流程或者变量等组件组织成一个固定的格式实现特定功能&#xff0c;也就是说函数是具有特定功能特定格式的代码段。 函数的定义格式如下&#xff1a; function 函数名(参数1&#xff0c;参数2&#xff0c;参数n) {…

vue前端上传图片到阿里云OSS,超详细上传图片与视频教程

vue前端直传图片与视频到阿里云OSS 1. 简介与日常使用2. 为什么要这么干&#xff1f;是因为我司后端不行吗&#xff1f;&#xff1f;&#xff1f;&#xff08;确实&#xff01;&#xff09;3. vue前端直传的操作4. 如何上传到阿里OSS指定文件夹呢? 1. 简介与日常使用 阿里云…

单片机第三季-第七课:STM32中断体系

目录 1&#xff0c;NVIC 2&#xff0c;中断和事件的区别 3&#xff0c;优先级的概念 4&#xff0c;如何实际编程使用外部中断 5&#xff0c;STM32开发板通过按键控制LED 5.1&#xff0c;打开相应GPIO模块时钟 5.2&#xff0c;NVIC设置 5.3&#xff0c;外部中断线和配套…

【经典LeetCode算法题目专栏分类】【第9期】深度优先搜索DFS与并查集:括号生成、岛屿问题、扫雷游戏

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推荐--…

BigQuery Clustered Table 简介 - 聚簇表

Clustered Table的定义 聚簇可以提高某些类型的查询&#xff08;例如&#xff0c;使用过滤条件子句的查询和聚合数据的查询&#xff09;的性能。当通过查询作业或加载作业将数据写入聚簇表时&#xff0c;BigQuery 会使用聚簇列中的值对这些数据进行排序。这些值用于将数据整理…