Lombok的使用及注解含义

文章目录

  • 一、简介
  • 二、如何使用
    • 2.1、在IDEA中安装Lombok插件
    • 2.2、添加maven依赖
  • 三、常用注解
    • 3.1、@Getter / @Setter
    • 3.2、@ToString
    • 3.3、@NoArgsConstructor / @AllArgsConstructor
    • 3.4、@EqualsAndHashCode
    • 3.5、@Data
    • 3.6、@Value
    • 3.7、@Accessors
      • 3.7.1、@Accessors(chain = true)
      • 3.7.2、@Accessors(fluent = true)
      • 3.7.3、@Accessors(prefix = "xxx")
    • 3.8、@Slf4j

一、简介

Lombok可以通过注解来帮助我们简化实体对象(POJO)的代码书写

二、如何使用

2.1、在IDEA中安装Lombok插件

File -> Settings -> Plugins

image-20230810133628791

image-20230810133706551

安装完成后重启IDEA

2.2、添加maven依赖

在 pom.xml 文件里增加

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope>
</dependency>

三、常用注解

@Getter / @Setter:自动生成类的 get() 和 set() 方法

@ToString:自动生成 toString() 方法

@NoArgsConstructor / @AllArgsConstructor:自动生成无参构造函数,全参构造函数

@EqualsAndHashCode:自动生成 equals() 和 hashCode() 方法

@Data: 相当于 @Getter、@Setter、@EqualsAndHashCode、@ToString 组合的效果

@Value:相当于 @AllArgsConstructor、@Getter、@EqualsAndHashCode、@ToString 组合的效果,并且类和变量都变成 final

@Accessors:可以配置生成 get() 和 set() 方法的样式和命名规则

@Slf4j:自动生成类的 log 静态常量

3.1、@Getter / @Setter

自动生成类的 get() 和 set() 方法

image-20230811163331544

3.2、@ToString

自动生成 toString() 方法

image-20230811163700637

3.3、@NoArgsConstructor / @AllArgsConstructor

自动生成无参构造函数,全参构造函数

image-20230811163939408

这里需要注意,如果不定义构造函数,编译器会默认生成一个空构造函数,但是当你定义了构造函数,编译器就不会生成空构造函数,所以一般这两个注解一起使用,除非只要全参构造函数

3.4、@EqualsAndHashCode

自动生成 equals() 和 hashCode() 方法

image-20230811164537596

3.5、@Data

相当于 @Getter、@Setter、@EqualsAndHashCode、@ToString 组合的效果

3.6、@Value

相当于 @AllArgsConstructor、@Getter、@EqualsAndHashCode、@ToString 组合的效果,并且类和变量都变成 final

3.7、@Accessors

这个注解需要结合 @Getter、@Setter 使用,当然 @Data 也可以

这个注解有三个参数

public @interface Accessors {boolean fluent() default false;boolean chain() default false;String[] prefix() default {};
}

3.7.1、@Accessors(chain = true)

我们先看 fluent 参数,将其设置为 true,相当于 get() 方法不受影响,set() 方法会返回对象本身(开启链式编程)

image-20230811164852972

这样我们创建对象后,可以这样赋值

public static void main(String[] args) {User user = new User();user.setUserId("1").setUserName("张三");
}

3.7.2、@Accessors(fluent = true)

再来看 fluent 参数,将其设置为 true,相当于,get() 和 set() 方法的 get 和set 字样去除了,并且 set 方法会返回对象本身(开启链式编程)

image-20230811171202702

这样我们创建对象后,可以这样赋值

public static void main(String[] args) {User user = new User();user.userId("1").userName("张三");
}

3.7.3、@Accessors(prefix = “xxx”)

使用prefix属性,get() 和set() 方法会忽视属性名的指定前缀,这里我们用 @Accessors(prefix = “user”) 举例,相当于 get() 和 set() 方法去除了 user 字样

image-20230811171710258

3.8、@Slf4j

自动生成该类的 log 静态常量

image-20230811173128922

当然我们一般用在业务处理类上,方便打印日志

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

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

相关文章

JavaScript 中常用简写技巧总结

平时我们写代码时最高级的境界是自己写的东西别人看不懂&#xff01;哈哈哈&#xff01;分享一些自己常用的js简写技巧&#xff0c;长期更新&#xff0c;会着重挑选一些实用的简写技巧&#xff0c;使自己的代码更简洁优雅~ 这里只会收集一些大多数人不知道的用法&#xff0c;但…

MySQL新的版本发布模型 - 创新版本和长支持版本

2023年7月18日&#xff0c;MySQL发布了最新数据库服务器版本8.1.0&#xff0c;其中变化最大的是MySQL采用了新的版本发布模型。本文是官方博客的中文摘抄和个人理解&#xff0c;原文更精彩: https://blogs.oracle.com/mysql/post/introducing-mysql-innovation-and-longterm-su…

网络原理(JavaEE初阶系列11)

目录 前言&#xff1a; 1.网络原理的理解 2.应用层 2.1自定义协议的约定 2.1.1确定要传输的信息 2.1.2确定数据的格式 3.传输层 3.1UDP 3.1.1UDP报文格式 3.2TCP 3.2.1确认应答 3.2.2超时重传 3.2.3连接管理 3.2.3.1三次握手 3.2.3.2四次挥手 3.2.4滑动窗口 3.…

bigemap如何添加mapbox地图?

第一步 打开浏览器&#xff0c;找到你要访问的地图的URL地址&#xff0c;并且确认可以正常在浏览器中访问&#xff1b;浏览器中不能访问&#xff0c;同样也不能在软件中访问。 以下为常用地图源地址&#xff1a; 天地图&#xff1a; http://map.tianditu.gov.cn 包含&…

【SA8295P 源码分析】75 - QNX GVM Secpol 安全策略文件 gvm_la.txt 内容分析解读

【SA8295P 源码分析】75 - QNX GVM Secpol 安全策略文件 gvm_la.txt 内容分析解读 第一部分、gvm_la_t secpol 类型定义第二部分、gvm_la_t 内存透传相关配置第三部分、gvm_la_t 中断透传相关配置第四部分、gvm_la_t 类型的进程允许通信的所有 secpol 类型系列文章汇总见:《【…

字符串的综合练习

1、练习-转换罗马数字 键盘录入一个字符串 要求1&#xff1a;长度为小于等于9 要求2&#xff1a;只能是数字 将内容变成罗马数字 下面是阿拉伯数字跟罗马数字的对比关系&#xff1a; Ⅰ-1 Ⅱ-2 Ⅲ-3 Ⅳ-4 Ⅴ-5 Ⅵ-6 Ⅶ-7 Ⅷ-8 Ⅸ-9 注意点&#xff1a;罗马数字里面没有0的&…

51单片机的管脚介绍

图文介绍 纯文字说明 单片机管脚相关结构及其作用如下 电源正极引脚 一般接5V电源&#xff0c;为单片机提供正常工作时的电压。 电源负极引脚 接地。然后才开始工作。 时钟引脚 18、19脚为时钟引脚&#xff08;XTAL2、XTAL1&#xff09;。单片机内部有大量的数字电路&a…

SringBoot-响应

响应数据 如何加载响应数据呢 其实在SpringBoot&#xff0c;已经有名为RessponseBody的方法注解为我们提供的响应的方法&#xff0c;他的作用是将方法返回值直接响应&#xff0c;如果返回值类型为实体对象/集合&#xff0c;则会转换为JSON格式响应。 而RestController已经在内…

Java真实面试题,offer已到手

关于学习 在黑马程序员刚刚开始的时候学习尽头非常足&#xff0c;到后面逐渐失去了一些兴趣&#xff0c;以至于后面上课会出现走神等问题&#xff0c;但是毕业时后悔晚矣。等到开始学习项目一的时候&#xff0c;思路总会比别人慢一些&#xff0c;不看讲义写不出来代码。 建议…

Lie group 专题:Lie 群

Lie group 专题&#xff1a;Lie 群 流形 流形的定义 一个m维流形是满足以下条件的集合M&#xff1a;存在可数多个称为坐标卡&#xff08;图集&#xff09;的子集合族.以及映到的连通开子集上的一对一映射&#xff0c;,称为局部坐标映射&#xff0c;满足以下条件 坐标卡覆盖M…

【Sklearn】基于多层感知器算法的数据分类预测(Excel可直接替换数据)

【Sklearn】基于多层感知器算法的数据分类预测(Excel可直接替换数据) 1.模型原理2.模型参数3.文件结构4.Excel数据5.下载地址6.完整代码7.运行结果1.模型原理 多层感知器(Multilayer Perceptron,MLP)是一种前馈神经网络,用于解决分类和回归问题。它包含输入层、若干个隐…

【数学建模】--灰色关联分析

系统分析: 一般的抽象系统&#xff0c;如社会系统&#xff0c;经济系统&#xff0c;农业系统&#xff0c;生态系统&#xff0c;教育系统等都包含有许多种因素&#xff0c;多种因素共同作用的结果决定了该系统的发展态势。人们常常希望知道在众多的因素中&#xff0c;哪些是主要…

leetcode 面试题 02.05 链表求和

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;面试题 02.05 链表求和 ps&#xff1a; 首先定义一个头尾指针 head 、tail&#xff0c;这里的 tail 是方便我们尾插&#xff0c;每次不需要遍历找尾&#xff0c;由于这些数是反向存在的&#xff0c;所以我们直接加起来若…

深入理解设计模式-行为型之观察者

概述 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;让多个观察者对象同时监听一个主题对象&#xff0c;当主题对象发生变化时&#xff0c;所有依赖于它的观察者对象都会得到通知并更新。 在…

如何安装Python?

如何安装Python&#xff1f; 安装Python非常简单&#xff0c;让我们一步步来进行。 1. 访问官方网站 首先&#xff0c;您需要访问Python官方网站&#xff08;https://www.python.org/&#xff09;。在首页上&#xff0c;您会看到一个大大的「Downloads」按钮&#xff0c;点击…

【Redis实践篇】使用Redisson 优雅实现项目实践过程中的5种场景

文章目录 1.前言2.使用方式1. 添加Redisson依赖&#xff1a;2. 配置Redis连接信息3. 使用场景3.1. 分布式锁3.2. 限流器&#xff08;Rate Limiter&#xff09;3.3. 可过期的对象&#xff08;Expirable Object&#xff09;3.4. 信号量&#xff08;Semaphore&#xff09;3.5. 分布…

ChatGPT在智能文档搜索和信息抽取中的应用如何?

智能文档搜索和信息抽取是信息检索和知识管理领域中的关键问题&#xff0c;而ChatGPT作为一种强大的自然语言处理模型&#xff0c;正在这些领域发挥越来越重要的作用。在大数据时代&#xff0c;文档数量庞大&#xff0c;信息量巨大&#xff0c;有效地搜索和抽取信息变得至关重要…

spfa判断负环

思路&#xff1a; &#xff08;1&#xff09;负环&#xff1a;区别于正环&#xff0c;在求最短路过程中&#xff0c;正环会绕路&#xff0c;故不会被讨论&#xff0c;而负环会不断让路总权更短&#xff0c;会让算法不断循环&#xff1b; &#xff08;2&#xff09;于是考虑统…

JVM---垃圾回收算法介绍

目录 分代收集理论 三种垃圾回收算法 标记-清除算法&#xff08;最基础的、基本不用&#xff09; 标记-复制算法 标记-整理算法 正式因为jvm有了垃圾回收机制&#xff0c;作为java开发者不会去特备关注内存&#xff0c;不像C和C。 优点&#xff1a;开发门槛低、安全 缺点…

windows Socket简单编程实例

服务端 #include <winsock2.h> #include <string.h> #include <stdio.h> #include <stdlib.h>#pragma comment(lib, "Ws2_32.lib")void error_handing(const char* message) {fputs(message, stderr);fputc(\n, stderr);exit(1); } int mai…