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

掌握lombok简化Java编码完成后端提效

Lombok安装

–>添加依赖

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

scope=provided,说明它只在编译阶段生效,不需要打入包中,Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件

–>安装插件
在这里插入图片描述

–>IDEA配置
在这里插入图片描述

–>重启IDEA

编写实体类,不写setter/getter方法

public class user {private Integer id;private String name;private String email;private String createName;private Date createTime;
}

使用mvn compile进行编译,可以看到target中生成的实体类文件:

在这里插入图片描述

Lombok原理

Lombok实际上是JSR 269插件化注解处理
JSR(Java Specification Requests) 269 :Pluggable Annotation Processing API 实现在Javac编译阶段利用“Annotation Processor”对自定义的注解进行预处理后生成真正在JVM上面执行的“Class文件”

Javac 解析成AST抽象语法树后,Lombok根据自己编写的注解处理器,动态地修改 AST增加新的节点(即Lombok自定义注解所需要生成的代码),最终生成JVM可执行的字节码Class文件,可以看编译后的在target目录下的class⽂件

常用注解

@Setter/@Getter

@Setter
@Getter

作用在上,生成所有成员变量的getter/setter方法;
作用于成员变量上,生成该成员变量的getter/setter方法

作用在类上时,可以在成员变量上单独添加:
@Getter(AccessLevel.NONE)该变量不想生成get方法,set使用相同
@Getter(AccessLevel.PROTECTED):控制该变量的get方法访问权限,set使用相同;

注:final类型成员变量只会生成get方法,static类型变量不会生成set/get方法

@NonNull非空判断

作用于方法上或者属性,⽤于非空判断,如果为空则抛异常

public void test(@NonNull String email){this.email = email;
}

编译后:

public void test(@NonNull String email) {if (email == null) {throw new NullPointerException("email is marked non-null but is null");} else {this.email = email;}
}

@NoArgsConstructor

⽣成无参构造函数

@AllArgsConstructor

生成全参构造函数,但不会生成finalstaticstatic final的成员变量的构造函数参数

@RequiredArgsConstructor

指定参数的构造函数,有以下的特征的字段:

  1. final类型未被初始化的属性;
  2. 标记了@NonNull的属性;

注:@NoArgsConstructor不能加

@ToString

作用在上,覆盖默认的toString()方法

@ToString(exclude = {"age"}):不包括某个字段
@ToString(of = {"name"}):只输出某个字段

@EqualsAndHashCode

作用于类,覆盖默认的equals和hashCode作用于全部属性

不包括某个属性:@EqualsAndHashCode(exclude = {"age"})
只输出某个属性:@EqualsAndHashCode(of = {"name"})

多注解集合配置

@Data

定义⼀个干净的类,作用于类上,是以下注解的集合:
@ToString@EqualsAndHashCode@Getter@Setter@RequiredArgsConstructor

@Builder建造者模式

构造者模式又称为建造者模式,当⼀个bean类重载了多个构造方法时,并且参数随机使用时,考虑使用构造者模式
谷歌的开源的protobuf协议生产的java bean赋值就是采用建造者模式

@Builder
作用在类上

User studentDO = User.builder().id(1).createName("794666918@qq").build();
System.out.println(studentDO);

在这里插入图片描述

@Slf4j日志注解

@Slf4j
作用于类上,生成日志变量,用于记录日志,提供自动格式化内容

log.info()

相关文章:

掌握lombok简化Java编码完成后端提效

Lombok安装 –>添加依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.16</version><scope>provided</scope> </dependency>scopeprovided&#xff0c;说…...

【蓝桥集训】第七天——并查集

作者&#xff1a;指针不指南吗 专栏&#xff1a;Acwing 蓝桥集训每日一题 &#x1f43e;或许会很慢&#xff0c;但是不可以停下来&#x1f43e; 文章目录1.亲戚2.合并集合3.连通块中点的数量有关并查集的知识学习可以移步至—— 【算法】——并查集1.亲戚 或许你并不知道&#…...

该来的总会来,继岳云鹏走红之后,孔云龙也和主流相声界打成一片

说起德云社的岳云鹏&#xff0c;都知道他是农民的孩子&#xff0c;初中没有毕业就外出打工&#xff0c;一路辛酸才走到了今天。当年岳云鹏在北京打工&#xff0c;炸酱面馆里面他和孔云龙最好&#xff0c;两个人又经过老先生介绍&#xff0c;一起投奔郭德纲学说相声。 进入德云社…...

索引的创建与设计原则

1.索引的声明与使用 1.1索引的分类 MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。 从 功能逻辑 上说&#xff0c;索引主要有 4 种&#xff0c;分别是普通索引、唯一索引、主键索引、全文索引。按照 物理实现方式&#xff0c;索引可以分…...

day51【代码随想录】动态规划之回文子串、最长回文子序列

文章目录前言一、回文子串&#xff08;力扣647&#xff09;二、最长回文子序列&#xff08;力扣516&#xff09;前言 1、回文子串 2、最长回文子序列 一、回文子串&#xff08;力扣647&#xff09; 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目…...

拟凸函数,拟凹函数,单峰函数

拟凸&#xff08;quasi-convex&#xff09;函数很早就听说过&#xff0c;但是标准定义一直不太了解&#xff0c;现在总结一下。 一个定义在凸集上的实数函数 fff 是拟凸函数&#xff1a;若对于其定义域内的任意两个点 xxx 和 yyy&#xff0c;以及任意常数 λ∈[0,1]\lambda\in…...

数据处理(伪)代码:卡尔曼滤波 vs. 卡尔曼平滑

步骤一、导入csv或txt格式的试验数据 最简洁也是据说读取速度最快的方法是&#xff1a; pPath C:\data_org\9#-1.txt % 数据文件 data importdata(pPath); % 读取 pPath 的结果到 一个数据结构变量 data 中。 pData data.data; % 提取有效数据数组data 的数据结构如下&a…...

华为OD机试题,用 Java 解【比赛评分】问题

最近更新的博客 华为OD机试 - 猴子爬山 | 机试题算法思路 【2023】华为OD机试 - 分糖果(Java) | 机试题算法思路 【2023】华为OD机试 - 非严格递增连续数字序列 | 机试题算法思路 【2023】华为OD机试 - 消消乐游戏(Java) | 机试题算法思路 【2023】华为OD机试 - 组成最大数…...

【基础算法】哈希表(开放寻址法)

&#x1f339;作者:云小逸 &#x1f4dd;个人主页:云小逸的主页 &#x1f4dd;Github:云小逸的Github &#x1f91f;motto:要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前…...

优化算法(寻优问题)

前言 群智能算法&#xff08;全局最优&#xff09;&#xff1a;模拟退火算法&#xff08;Simulated annealing&#xff0c;SA&#xff09;&#xff0c;遗传算法&#xff08;Genetic Algorithm, GA&#xff09;&#xff0c;粒子群算法&#xff08;Particle Swarm Optimization&…...

基于视频流⽔线的Opencv缺陷检测项⽬

代码链接见文末 1.数据与任务概述 输入为视频数据,我们需要从视频中检测出缺陷,并对缺陷进行分类。 2.整体流程 (1)视频数据读取和轮廓检测 首先,我们需要使用opencv读取视频数据,将彩色图转为灰度图后进行图像阈值处理。阈值处理是为了让前景和背景更明显的区分处理。…...

百万数据excel导出功能如何实现?

最近我做过一个MySQL百万级别数据的excel导出功能&#xff0c;已经正常上线使用了。 这个功能挺有意思的&#xff0c;里面需要注意的细节还真不少&#xff0c;现在拿出来跟大家分享一下&#xff0c;希望对你会有所帮助。 原始需求&#xff1a;用户在UI界面上点击全部导出按钮…...

华为OD机试题,用 Java 解【合规数组】问题

最近更新的博客 华为OD机试 - 猴子爬山 | 机试题算法思路 【2023】华为OD机试 - 分糖果(Java) | 机试题算法思路 【2023】华为OD机试 - 非严格递增连续数字序列 | 机试题算法思路 【2023】华为OD机试 - 消消乐游戏(Java) | 机试题算法思路 【2023】华为OD机试 - 组成最大数…...

SAP ABAP中的数据类型 Data Types

简单来说分两种&#xff1a; 数据字典里定义的在ABAP程序里定义的 文章目录1. ABAP数据字典里的1.1 数字型的1.2 字符型1.3 字节型1.4 特殊类型2. 预定义的ABAP数据类型2.1 预定义数字型2.2 预定义字符型2.3 预定义字节型1. ABAP数据字典里的 1.1 数字型的 用在数学计算里的…...

HashMap~

HashMap&#xff1a; HashMap是面试中经常被问到的一个内容&#xff0c;以下两个经常被问到的问题&#xff0c; Question1&#xff1a;底层数据结构&#xff0c;1.7和1.8有何不同&#xff1f; 答&#xff1a;1.7数组&#xff0b;链表&#xff0c;1.8数组&#xff0b;(链表|红…...

EasyNLP集成K-Global Pointer算法,支持中文信息抽取

作者&#xff1a;周纪咏、汪诚愚、严俊冰、黄俊 导读 信息抽取的三大任务是命名实体识别、关系抽取、事件抽取。命名实体识别是指识别文本中具有特定意义的实体&#xff0c;包括人名、地名、机构名、专有名词等&#xff1b;关系抽取是指识别文本中实体之间的关系&#xff1b;…...

mysql lesson3

DQL查找语句续集.............................. 分组函数&#xff08;也叫多行处理函数&#xff09; 1&#xff1a; select sum(sal) from emp;select min(sal)from emp;select max(sal)from emp;select avg(sal)from emp;select count(ename)from emp;2&#xff1a;分组函…...

python源码保护

文章目录代码混淆打包exe编译为字节码源码加密项目发布部署时&#xff0c;为防止python源码泄漏&#xff0c;可以通过几种方式进行处理代码混淆 修改函数、变量名 打包exe 通过pyinstaller 将项目打包为exe可执行程序&#xff0c;不过容易被反编译。 编译为字节码 py_comp…...

第51讲:SQL优化之COUNT查询的优化

文章目录 1.COUNT查询优化的概念2.COUNT函数的用法1.COUNT查询优化的概念 在很多的业务场景下可能需要统计一张表中的总数据量,当表的数据量很大时,使用COUNT统计表数据量时,也是非常耗时的。 MyISAM引擎会把一个表的总行记录在磁盘中,当执行count(*)的时候会直接从磁盘中…...

ArrayBlockingQueue

同步队列超出长度时&#xff0c;不同的返回形式可以分为以下四种。 会抛异常不会抛异常&#xff0c;有返回值死等&#xff0c;直到可以插入值或者取到值设置等待超时时间添加方法add()offfer()put()offer(E e,long timeout, TimeUnit unit)删除方法remove()poll()take()poll(l…...

AudioSeal Pixel Studio实操手册:音频指纹哈希值生成与区块链存证接口对接示例

AudioSeal Pixel Studio实操手册&#xff1a;音频指纹哈希值生成与区块链存证接口对接示例 1. 工具概述与核心价值 AudioSeal Pixel Studio是一款基于Meta开源的AudioSeal算法构建的专业音频水印工具。它能够在保持原始音频质量的前提下&#xff0c;为音频文件嵌入不可感知的…...

3大核心技术深度解析:Windows Defender Control开源项目的架构与实践指南

3大核心技术深度解析&#xff1a;Windows Defender Control开源项目的架构与实践指南 【免费下载链接】defender-control An open-source windows defender manager. Now you can disable windows defender permanently. 项目地址: https://gitcode.com/gh_mirrors/de/defen…...

美胸-年美-造相Z-Turbo部署避坑指南:Xinference日志解读与常见启动失败排查

美胸-年美-造相Z-Turbo部署避坑指南&#xff1a;Xinference日志解读与常见启动失败排查 1. 项目简介与部署价值 美胸-年美-造相Z-Turbo是基于Z-Image-Turbo LoRA版本的专业文生图模型&#xff0c;专注于高质量的美胸年美风格图像生成。通过Xinference框架部署&#xff0c;结合…...

三步解决Genshin FPS Unlocker进程管理冲突:从根源解决工具启动失败问题

三步解决Genshin FPS Unlocker进程管理冲突&#xff1a;从根源解决工具启动失败问题 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 问题现象&#xff1a;启动冲突的典型表现 当用户尝试…...

如何永久保存微信聊天记录?WeChatMsg终极免费解决方案完全指南

如何永久保存微信聊天记录&#xff1f;WeChatMsg终极免费解决方案完全指南 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/…...

Vin象棋:基于Yolov5的中国象棋智能视觉辅助系统,重新定义数字化对弈体验

Vin象棋&#xff1a;基于Yolov5的中国象棋智能视觉辅助系统&#xff0c;重新定义数字化对弈体验 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi 在数字化对…...

告别复杂配置!intv_ai_mk11一键部署,小白也能轻松体验AI写作

告别复杂配置&#xff01;intv_ai_mk11一键部署&#xff0c;小白也能轻松体验AI写作 1. 为什么选择intv_ai_mk11 在AI技术快速发展的今天&#xff0c;文本生成模型已经成为内容创作、客服问答、文案撰写等多个领域的得力助手。然而&#xff0c;对于大多数非技术背景的用户来说…...

JL杰理AC696N系列开发GPIO使用指南:模式、配置与特殊IO

引言GPIO是嵌入式开发最基础也最容易出问题的部分。拉高拉低看起来简单&#xff0c;但驱动能力不够、上下拉没配对、特殊引脚没处理&#xff0c;经常导致外设工作不正常或者功耗异常。JL杰理AC696N的GPIO功能挺全的&#xff0c;有普通、强、超强三种驱动能力&#xff0c;还支持…...

Qwen3-14B API服务压测报告:QPS 23+,P99延迟<1.2s高并发表现

Qwen3-14B API服务压测报告&#xff1a;QPS 23&#xff0c;P99延迟<1.2s高并发表现 1. 测试环境与配置 1.1 硬件配置 本次压测采用专门优化的Qwen3-14B私有部署镜像&#xff0c;运行在以下硬件环境&#xff1a; GPU&#xff1a;RTX 4090D 24GB显存&#xff08;与镜像完美…...

Pixel Mind Decoder 版本管理与协作:Git工作流在AI项目中的应用

Pixel Mind Decoder 版本管理与协作&#xff1a;Git工作流在AI项目中的应用 1. 为什么AI项目需要版本管理 在开发Pixel Mind Decoder这样的情绪分析系统时&#xff0c;我们会频繁修改代码、调整Prompt模板、更新模型参数。如果没有版本管理&#xff0c;很容易陷入混乱&#x…...