Lombok常用注解
文章目录
- 一、简介
- 二、Idea中配置
- 三、Maven中配置
- 四、相应注解
- 1、@Data
- 2、@RequiredArgsConstructor
- 3、@AllArgsConstructor
- 4、@NoArgsConstructor
- 5、@Getter/@Setter:
- 6、@ToString
- 7、@EqualsAndHashCode
- 8、@Builder
- 9、@NonNull
- 10、@Log
- 11、@Slf4j
- 12、@Log4j2
- 13、@SneakyThrows
- 14、@Cleanup
- 15、@Synchronized
- 16、@SneakyThrows
- 五、XMind整理
一、简介
官网
https://projectlombok.org/

二、Idea中配置

三、Maven中配置
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</version>
</dependency>
四、相应注解
1、@Data
作用位置: 类上(实体类)
用途:
是1个注解集合:
- @ToString
- @EqualsAndHashCode
- @Getter
- @Setter
- @RequiredArgsConstructor
案例:
@Data
public class User {private String name;private int age;private String address;
}
2、@RequiredArgsConstructor
作用位置: 类上(实体类)
用途:
注解 集合:
- @AllArgsConstructor
- @NoArgsConstructor
案例:
@RequiredArgsConstructor
public class User {private String name;private int age;private String address;
}
3、@AllArgsConstructor
作用位置: 类上(实体类)
用途: 生成全参构造器
案例:
@AllArgsConstructor
public class User {private String name;private int age;private String address;
}
4、@NoArgsConstructor
作用位置: 类上(实体类)
用途: 生成无参构造器
案例:
@NoArgsConstructor
public class User {private String name;private int age;private String address;
}
5、@Getter/@Setter:
作用位置: 类上(实体类)、成员变量
用途:
作用类上:生成所有成员变量的getter/setter方法
成员变量:生成该成员变量的getter/setter方法
案例:
@Getter
@Setter
public class User {private String name;private int age;private String address;
}
6、@ToString
作用位置: 作用于类。
用途: 覆盖默认的toString()方法。
案例:
@ToString
public class User {private String name;private int age;private String address;
}
7、@EqualsAndHashCode
作用位置: 作用于类
用途: 覆盖默认的equals和hashCod
案例:
@EqualsAndHashCode
public class User {private String name;private int age;private String address;
}
8、@Builder
作用位置: 作用于类上
用途: 将类转变为建造者模式
案例:
import lombok.Builder;@Builder
public class User {private String name;private int age;private String address;
}public void test() {User build = User.builder().name("张三").age(18).address("北京").build();
}
9、@NonNull
作用位置: 成员变量和参数中
用途: 标识不能为空,否则抛出空指针异常
案例:
public NonNullExample(@NonNull Person person) {super("Hello");this.name = person.getName();
}
10、@Log
作用位置: 作用于类上
用途: 生成日志变量。针对不同的日志实现产品,有不同的注解
java.util.logging.Logger
java.util.logging.Logger#getLogger(java.lang.String)
@CommonsLog
@Log4j
@Log4j2
@Slf4j
@XSlf4j
@JBossLog
@Flogger
@CustomLog
案例:
@Log
public class Test {public void test() {}
}
11、@Slf4j
作用位置: 类
用途: 表明使用slf4j日志门面
案例:
@Slf4j
public class LogExampleOther {public void test() {log.error("Something else is wrong here");}
}
12、@Log4j2
作用位置:
用途:
- 自动关闭资源
- 针对实现了java.io.Closeable接口的对象有效,如:典型的IO流对象
案例:
@Log4j2
public class LogExampleOther {public void test() {log.error("Something else is wrong here");}
}
13、@SneakyThrows
作用位置:
用途: 可以对受检异常进行捕捉并抛出
案例:
import lombok.SneakyThrows;public class SneakyThrowsExample implements Runnable {@SneakyThrows(UnsupportedEncodingException.class)public String utf8ToString(byte[] bytes) {return new String(bytes, "UTF-8");}@SneakyThrowspublic void run() {throw new Throwable();}
}
14、@Cleanup
作用位置:
案例:
import lombok.Cleanup;
import java.io.*;public class CleanupExample {public static void main(String[] args) throws IOException {@Cleanup InputStream in = new FileInputStream(args[0]);@Cleanup OutputStream out = new FileOutputStream(args[1]);byte[] b = new byte[10000];while (true) {int r = in.read(b);if (r == -1) break;out.write(b, 0, r);}}
}
15、@Synchronized
- 作用于方法级别,可以替换synchronize关键字或lock锁
- 用处不大
16、@SneakyThrows
使用位置: 方法
作用: 可以将方法中的代码用 try-catch 语句包裹起来,捕获异常并在 catch 中用 Lombok.sneakyThrow(e) 把异常抛出,可以使用 @SneakyThrows(Exception.class) 的形式指定抛出哪种异常。
案例:
import lombok.SneakyThrows;public class SneakyThrowsExample implements Runnable {@SneakyThrows(UnsupportedEncodingException.class)public String utf8ToString(byte[] bytes) {return new String(bytes, "UTF-8");}@SneakyThrowspublic void run() {throw new Throwable();}
}
效果:
import lombok.Lombok;public class SneakyThrowsExample implements Runnable {public String utf8ToString(byte[] bytes) {try {return new String(bytes, "UTF-8");} catch (UnsupportedEncodingException e) {throw Lombok.sneakyThrow(e);}}public void run() {try {throw new Throwable();} catch (Throwable t) {throw Lombok.sneakyThrow(t);}}
}
五、XMind整理
地址
https://download.csdn.net/download/weixin_44624117/87738347

相关文章:
Lombok常用注解
文章目录 一、简介二、Idea中配置三、Maven中配置四、相应注解1、Data2、RequiredArgsConstructor3、AllArgsConstructor4、NoArgsConstructor5、Getter/Setter:6、ToString7、EqualsAndHashCode8、Builder9、NonNull10、Log11、Slf4j12、Log4j213、SneakyThrows14、Cleanup15、…...
加拿大各省接受公立教育的初始年龄汇总 — 供携子女赴加的访学、博后参考
近年来到加拿大从事访问学者和博士后研究的申请者日益增多,有些申请者想带孩子同去上公立学校。因为加拿大各省教育局政策有差异,所以入学(包括学前班)年龄不同,为此知识人网小编整理本文为大家解惑答疑。 加拿大为本国…...
数字化工厂:虹科Vuzix AR眼镜在工业制造中的革新应用
随着现代科学技术和新兴需求的快速增长,增强现实(AR)、各种“现实”产品与技术不断涌入创新市场,新兴用例数量正在快速增长,可以肯定,在可预见的未来,AR技术将成为各行各业的生产与工作主流。 增强现实(AR&…...
配置出接口方式的单服务器智能DNS
组网需求 如图1所示,企业部署了一台ISP1服务器对外提供Web服务,域名为www.example.com。ISP1服务器的私网IP地址为10.1.1.10,服务器映射后的公网IP地址为1.1.1.10。企业的DNS服务器上存在域名www.example.com与ISP1服务器地址1.1.1.10的对应关…...
数据结构初阶(栈和队列)
文章目录 一、栈1.1 什么是栈1.2 栈的使用(1)底层代码(2)方法(3)栈的应用 二、队列2.1 什么是队列2.2 队列的使用(1)底层代码的实现(2)队列的使用 2.3 双端队…...
IDEA实用设置
1、设置全局编码统一为UTF-8 file>setting中搜索框输入file encoding修改格式为UTF-8 2、设置文字大小 file>setting中搜索框输入font修改字体大小 3、配置maven file>setting中搜索框输入maven修改maven的路径、conf文件、文件仓库 4、idea中实现Serializable提示…...
关联爆破-RSA分解
今天遇到一个RSA题,给出n和pq求分解,翻箱倒柜也没找着原来写的程序,这里重写一下。都是编程的活。 第1种情况,给出p^q 这种情况当p,q相同位相同时为0,不同时为1,爆破的时候只需要逐位判断两种情况&#x…...
Netty内存管理--内存池PoolArena
一、写在前面 到这里, 想必你已知道了Netty中的内存规格化(SizedClass), Page和SubPage级别的内存分配, 但是具体使用者不应该关心应该申请page还是subpage。而且从过去的经验来说, 申请page/subpage的数量也是个动态值, 如果申请使用完之后就释放那使用内存池的意义就不大。N…...
RabbitMQ 发布订阅模式,routing路由模式,topic模式
发布订阅模式 一个消息可以由多个消费者消费同一个消息 消费者1和2同时消费了该消息 举例 public static void main(String[] args) throws IOException, TimeoutException {//1 创建连接工厂ConnectionFactory connectionFactorynew ConnectionFactory();//2 设置rabbitmq …...
又一款可视化神器,开源了!
在互联网数据大爆炸的这几年,各类数据处理、数据可视化的需求使得 GitHub 上诞生了一大批高质量的 BI 工具。 借助这些 BI 工具,我们能够大幅提升数据分析效率、生成更高质量的项目报告,让用户通过直观的数据看到结果,减低沟通成…...
干货 | 中科院心理所考研复试经验分享
Hello,大家好! 这里是壹脑云科研圈,我是喵君姐姐~ 此时此刻,23年考研的小伙伴估计正在为复试进行准备吧,大家都准备得怎么样了呢? 今天为大家带来的就是我国顶级心理学研究结构—中科院心理所…...
Redis基础知识概述
Redis基础知识概述 文章目录 Redis基础知识概述一、Redis简介二、NoSQL技术三、Redis的高并发和快速原因四、Redis为什么是单线程的 五、单线程的优劣势1、优势2、劣势 六、Redis高并发总结七、在java中使用Redis1、添加Jedis依赖 八、Redis在Java Web中的应用1、存储缓存用的数…...
开心档之C++ 引用
C 引用 引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。 C 引用 vs 指针 引用很容易与指针混淆,它们之间有三个主要的不同:…...
后台优化主要分为哪些?工作内容及流程是什么?
什么是5G网络优化? 顾名思义就是对4G/5G无线网络进行测试,分析,优化的专业技术工作。网络优化工作的进展程度,直接关系着我们对4G/5G无线网络的使用体验。 网络优化工程师通过对现已运行的手机通话网络进行话务数据分析、现场测…...
二叉树及其遍历
文章目录 二叉树树的定义二叉树的定义遍历先序遍历中序遍历后序遍历层次遍历定义队列层次创建二叉树层次遍历 二叉树 树是一种非线性的数据结构,由若干个节点组成,节点之间存在一种父子关系,具有层次结构。二叉树是一种特殊的树结构ÿ…...
java 版本企业电子招投标采购系统源码之登录页面
信息数智化招采系统 服务框架:Spring Cloud、Spring Boot2、Mybatis、OAuth2、Security 前端架构:VUE、Uniapp、Layui、Bootstrap、H5、CSS3 涉及技术:Eureka、Config、Zuul、OAuth2、Security、OSS、Turbine、Zipkin、Feign、Monitor、…...
第五章 使用RAID与LVM磁盘阵列技术
第五章 使用RAID与LVM磁盘阵列技术 一、RAID磁盘冗余阵列 1、部署磁盘阵列 (1)、RAID0、1、5、10方案技术对比 RAID级别最少硬盘可用容量读写性能安全性特点02nn低追求最大容量和速度,任何一块盘损坏,数据全部异常。12n/2n高追…...
LeetCode 560. 和为 K 的子数组
LeetCode 560. 和为 K 的子数组 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的连续子数组的个数 。 示例 1: 输入:nums [1,1,1], k 2 输出:2示例 2: 输入:nums [1,2,3], k 3 …...
后端要一次性返回我10万条数据
问题描述 面试官:后端一次性返回10万条数据给你,你如何处理?我:歪嘴一笑,what the f**k! 问题考察点 看似无厘头的问题,实际上考查候选人知识的广度和深度,虽然在工作中这种情况很少遇到... …...
汽车智能化「出海」红利
在高阶智能座舱中,车载导航产品作为与用户体验息息相关的模块之一,同样也进入了升级迭代周期。 基于高精度地图渲染、高精度定位算法、AR等技术的车道级导航、AR导航等产品快速上车,但同时随着人机交互多模发展以及3D沉浸式用户体验需求趋势下…...
百度季报图解:营收321亿 AI业务占比首次过半 DAA重塑AI价值标准
雷递网 雷建平 5月18日百度集团(纳斯达克:BIDU及香港联交所:9888(港元柜台)及89888(人民币柜台))今天公布其截至2026年3月31日止第一季度的未经审计财务业绩,财报显示&am…...
深入解析PCI中断路由:从硬件引脚到操作系统中断处理的完整链路
1. 项目概述与核心问题在计算机硬件系统里,中断机制是设备与处理器高效通信的生命线。它允许设备在需要处理器服务时,主动“打断”处理器当前的工作流,而不是让处理器不断地去“询问”设备的状态。对于PCI(Peripheral Component I…...
完全掌握JetBrains IDE试用期重置:从原理到实战的终极解决方案
完全掌握JetBrains IDE试用期重置:从原理到实战的终极解决方案 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 还在为JetBrains系列开发工具的试用期限制而困扰吗?IDE Eval Resetter为您提…...
猫抓浏览器扩展完全指南:5步掌握网页视频资源嗅探与下载
猫抓浏览器扩展完全指南:5步掌握网页视频资源嗅探与下载 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾经遇到过想保存网页上…...
信号处理避坑指南:ESPRIT、Root-Music等DOA估计算法,到底该怎么选?
DOA估计算法选型实战:ESPRIT与MUSIC家族的性能对决 当八通道均匀线阵捕捉到两个间隔仅5的远场信号时,算法A在信噪比15dB时成功分离目标,而算法B直到25dB才能勉强分辨——这种真实场景中的性能差异,正是工程师选择DOA(波…...
AI 挖洞新思路、深度解析两大间接提示词注入漏洞攻防思路,注入也能获得上万美金
0x01 简介 在移动 AI 领域,我已经很久没有关注过提示词注入漏洞了,在前两天关注到 Gemini 的漏洞之前,我对提示词注入的印象还停留在两年前,当时搞搞越狱,觉得这东西是纯内容安全,也只能等未来对能够进…...
Arm SMIN指令解析:多向量最小值计算与优化实践
1. Arm SMIN指令深度解析:多向量最小值计算实战指南在Armv9架构的SVE2指令集中,SMIN(Signed Minimum)指令作为向量处理的重要成员,专门用于计算多组向量元素间的有符号最小值。我第一次在嵌入式AI项目中用到这个指令时…...
企业邮箱代理:谷歌企业邮箱安全防护架构与合规应用解析
前言谷歌企业邮箱凭借全球通用 IP 信誉、海外节点覆盖广等优势,成为外贸企业对接欧美、东南亚海外客户的首选办公邮箱。但国内企业直接使用,容易出现登录卡顿、邮件发送延迟、大批量开发信被限制等问题,做好针对性优化,才能最大化…...
Spring AI + Ollama 深度实战:从 RAG 问答到 Graph Agent 全流程指南
场景 Spring AI RAG 检索增强生成:概念、实战与完整代码: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/161055108 基于上面的基础,实现Graph工作流编排的简单示例。 大语言模型(LLM)在实际应用中面…...
大模型接入业务系统:如何用RAG技术让AI精准回答内部文档问题?
本文探讨了如何利用RAG(检索增强生成)技术使大模型能够回答公司内部文档问题。文章首先介绍了企业面临的需求挑战,即大模型缺乏对私有内部知识的理解。接着详细解析了RAG的基本原理,即通过检索相关资料再让大模型生成答案。随后&a…...
