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

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、…...

加拿大各省接受公立教育的初始年龄汇总 — 供携子女赴加的访学、博后参考

近年来到加拿大从事访问学者和博士后研究的申请者日益增多&#xff0c;有些申请者想带孩子同去上公立学校。因为加拿大各省教育局政策有差异&#xff0c;所以入学&#xff08;包括学前班&#xff09;年龄不同&#xff0c;为此知识人网小编整理本文为大家解惑答疑。 加拿大为本国…...

数字化工厂:虹科Vuzix AR眼镜在工业制造中的革新应用

随着现代科学技术和新兴需求的快速增长&#xff0c;增强现实(AR)、各种“现实”产品与技术不断涌入创新市场&#xff0c;新兴用例数量正在快速增长&#xff0c;可以肯定&#xff0c;在可预见的未来&#xff0c;AR技术将成为各行各业的生产与工作主流。 增强现实&#xff08;AR&…...

配置出接口方式的单服务器智能DNS

组网需求 如图1所示&#xff0c;企业部署了一台ISP1服务器对外提供Web服务&#xff0c;域名为www.example.com。ISP1服务器的私网IP地址为10.1.1.10&#xff0c;服务器映射后的公网IP地址为1.1.1.10。企业的DNS服务器上存在域名www.example.com与ISP1服务器地址1.1.1.10的对应关…...

数据结构初阶(栈和队列)

文章目录 一、栈1.1 什么是栈1.2 栈的使用&#xff08;1&#xff09;底层代码&#xff08;2&#xff09;方法&#xff08;3&#xff09;栈的应用 二、队列2.1 什么是队列2.2 队列的使用&#xff08;1&#xff09;底层代码的实现&#xff08;2&#xff09;队列的使用 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题&#xff0c;给出n和pq求分解&#xff0c;翻箱倒柜也没找着原来写的程序&#xff0c;这里重写一下。都是编程的活。 第1种情况&#xff0c;给出p^q 这种情况当p,q相同位相同时为0&#xff0c;不同时为1&#xff0c;爆破的时候只需要逐位判断两种情况&#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 …...

又一款可视化神器,开源了!

在互联网数据大爆炸的这几年&#xff0c;各类数据处理、数据可视化的需求使得 GitHub 上诞生了一大批高质量的 BI 工具。 借助这些 BI 工具&#xff0c;我们能够大幅提升数据分析效率、生成更高质量的项目报告&#xff0c;让用户通过直观的数据看到结果&#xff0c;减低沟通成…...

干货 | 中科院心理所考研复试经验分享

Hello&#xff0c;大家好&#xff01; 这里是壹脑云科研圈&#xff0c;我是喵君姐姐&#xff5e; 此时此刻&#xff0c;23年考研的小伙伴估计正在为复试进行准备吧&#xff0c;大家都准备得怎么样了呢&#xff1f; 今天为大家带来的就是我国顶级心理学研究结构—中科院心理所…...

Redis基础知识概述

Redis基础知识概述 文章目录 Redis基础知识概述一、Redis简介二、NoSQL技术三、Redis的高并发和快速原因四、Redis为什么是单线程的 五、单线程的优劣势1、优势2、劣势 六、Redis高并发总结七、在java中使用Redis1、添加Jedis依赖 八、Redis在Java Web中的应用1、存储缓存用的数…...

开心档之C++ 引用

C 引用 引用变量是一个别名&#xff0c;也就是说&#xff0c;它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量&#xff0c;就可以使用该引用名称或变量名称来指向变量。 C 引用 vs 指针 引用很容易与指针混淆&#xff0c;它们之间有三个主要的不同&#xff1a;…...

后台优化主要分为哪些?工作内容及流程是什么?

什么是5G网络优化&#xff1f; 顾名思义就是对4G/5G无线网络进行测试&#xff0c;分析&#xff0c;优化的专业技术工作。网络优化工作的进展程度&#xff0c;直接关系着我们对4G/5G无线网络的使用体验。 网络优化工程师通过对现已运行的手机通话网络进行话务数据分析、现场测…...

二叉树及其遍历

文章目录 二叉树树的定义二叉树的定义遍历先序遍历中序遍历后序遍历层次遍历定义队列层次创建二叉树层次遍历 二叉树 树是一种非线性的数据结构&#xff0c;由若干个节点组成&#xff0c;节点之间存在一种父子关系&#xff0c;具有层次结构。二叉树是一种特殊的树结构&#xff…...

java 版本企业电子招投标采购系统源码之登录页面

​ 信息数智化招采系统 服务框架&#xff1a;Spring Cloud、Spring Boot2、Mybatis、OAuth2、Security 前端架构&#xff1a;VUE、Uniapp、Layui、Bootstrap、H5、CSS3 涉及技术&#xff1a;Eureka、Config、Zuul、OAuth2、Security、OSS、Turbine、Zipkin、Feign、Monitor、…...

第五章 使用RAID与LVM磁盘阵列技术

第五章 使用RAID与LVM磁盘阵列技术 一、RAID磁盘冗余阵列 1、部署磁盘阵列 &#xff08;1&#xff09;、RAID0、1、5、10方案技术对比 RAID级别最少硬盘可用容量读写性能安全性特点02nn低追求最大容量和速度&#xff0c;任何一块盘损坏&#xff0c;数据全部异常。12n/2n高追…...

LeetCode 560. 和为 K 的子数组

LeetCode 560. 和为 K 的子数组 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的连续子数组的个数 。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1], k 2 输出&#xff1a;2示例 2&#xff1a; 输入&#xff1a;nums [1,2,3], k 3 …...

后端要一次性返回我10万条数据

问题描述 面试官&#xff1a;后端一次性返回10万条数据给你&#xff0c;你如何处理&#xff1f;我&#xff1a;歪嘴一笑&#xff0c;what the f**k! 问题考察点 看似无厘头的问题&#xff0c;实际上考查候选人知识的广度和深度&#xff0c;虽然在工作中这种情况很少遇到... …...

汽车智能化「出海」红利

在高阶智能座舱中&#xff0c;车载导航产品作为与用户体验息息相关的模块之一&#xff0c;同样也进入了升级迭代周期。 基于高精度地图渲染、高精度定位算法、AR等技术的车道级导航、AR导航等产品快速上车&#xff0c;但同时随着人机交互多模发展以及3D沉浸式用户体验需求趋势下…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...