首页 > 其他分享 >lombok是怎么用的

lombok是怎么用的

时间:2024-11-28 17:23:29浏览次数:2  
标签:怎么 代码 生成 user 注解 lombok Lombok

lombok

Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不需要为类编写getter或equals方法,同时可以自动化日志变量。用大白话来讲,Lombok可以通过几个注释在编译的时候为我们的JavaBean动态的生成get,set,tostring,无参构造方法,全参数构造方法,基于builder的创建方式。image-20241128091018603

在[上一节](用一个项目把控制层、业务层、持久层说明白了,每一句话都讲的很清楚 - ivanlee717 - 博客园)在我们定义一个实体类的时候,会用快捷方法生成了很多方法,但是这种代码我们可以直接通过几个简单的注解完成。

lombok安装

<!--Lombok引入-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

image-20241128093002481

lombok原理

Lombok的基本实现原理可以概括为以下几个步骤:

  1. 注解扫描:Lombok的注解处理器会扫描Java源代码中的注解,并找到使用了Lombok注解的类、字段和方法。
  2. AST操作:Lombok注解处理器会对注解所标注的类进行抽象语法树(AST)的解析和操作,以识别和处理这些注解。
  3. 注解解析:注解处理器解析找到的注解,确定需要生成的代码类型和内容。
  4. 代码生成:基于注解的定义和规则,Lombok注解处理器生成相应的代码片段,如getter和setter方法、构造函数等。
  5. 代码注入:生成的代码片段被插入到编译结果中的相应位置,与手动编写的代码合并在一起。
  6. 最终编译:编译器将生成的代码和手动编写的代码一起编译为最终的字节码文件。

image-20241128093547668

普通的java程序运行原理如上图所示,但是lombok会作为一个插件帮助用户代码更简洁image-20241128100123009

lombok注解

注解 注解作用
@Getter 自动生成getter方法
@Setter 自动生成Setter方法
@ToString 自动生成tostring方法
@EqualsAndHashCode 自动生成equals和hashCode方法
@NoArgsConstructor 自动生成无参构造函数
@AllArgsConstructor 自动生成包含所有字段的构造函数

常用的组合注解有

注解 注解作用
@Data 组合了@Getter、@Setter、@ToString、@EqualsAndHashCode等注解的功能
@Value 组合了@Getter、@ToString、@EqualsAndHashCode等注解的功能

@Data注解和@Value注解有哪些区别?

@Data生成的类是可变的,具有可读写的setter方法,@Value生成的类是不可变的,字段是final的,没有生成setter方法。

Lombok日志注解:

注解 注解作用
@Slf4j 自动生成一个名为log的日志记录器

其他注解用的不多,先提一下

注解 注解作用
@Builder 自动生成Builder模式的构造器方法
@NonNull 自动生成非空检查
@Delegate 自动生成委托方法
@Cleanup 自动释放资源

代码实现

image-20241128114053957

直接设置这三个注解就帮助我们搞定了很多冗余的代码,现在写一个测试方法

@Test
public void lombok(){
    User user = new User();
    user.setUsername("test");
    user.setPassword("1234");
    user.setGender(1);
    user.setCreateUser(user.getUsername());
    user.setModifiedUser(user.getUsername());
    Date date = new Date();
    user.setCreateTime(date);
    user.setModifiedTime(date);
    System.out.println(user.toString());
}

image-20241128114629401

上述过程也可以直接使用@Data解决。

如果在定义实体的时候使用@builder,可以在声明一个实例的时候运用以下写法

User user = User.builder()
                .uid(1)
                .username("1234")
                .password("5678")
                .gender(0)
                .email("kxcnsakdn").build();
System.out.println(user.toString());

image-20241128171154147

标签:怎么,代码,生成,user,注解,lombok,Lombok
From: https://www.cnblogs.com/ivanlee717/p/18574675

相关文章

  • Llama3.1 是怎么工作哒?原文翻译版
    了解Llama3.1如何工作——深入探讨模型流程原文标题:UnderstandHowLlama3.1Works—ADeepDiveIntotheModelFlow原作者:XiaojianYu原文链接:https://medium.com/@yuxiaojian/understand-how-llama3-1-works-a-deep-dive-into-the-model-flow-b149aba04bed翻译:岁月月......
  • 2024年图纸防泄密指南|设计图纸防泄密该怎么做?教你10个方法杜绝泄密
    “千里之堤,溃于蚁穴”,这句古语深刻揭示了细节对于整体安全的重要性。在当今时代,设计图纸作为企业核心资产的组成部分,其保密工作同样需要我们从细节入手,筑牢安全防线。本文将介绍10个有效的防泄密方法,共同构建一道坚不可摧的图纸安全屏障。1.加密图纸文件加密是保护图纸最......
  • 国标GB28181-2016平台LiteGBS国标GB28181设备管理平台摄像机IP地址丢失怎么办?
    在LiteGBS国标GB28181设备管理软件中,摄像机IP地址是连接和管理监控设备的关键信息。正确配置和维护IP地址对于确保视频监控系统的稳定性和可靠性至关重要。如果摄像机的IP地址出现问题,可能会导致监控画面无法访问、设备无法远程管理等状况,从而影响到整个监控系统的效能。因此,了解......
  • 新能源汽车智慧充电桩管理方案:应用选型与充电协议应该怎么做?
    新能源智慧充电桩平台采用虚拟化技术,使多种应用共享服务器、存储等硬件资源,可以帮助用户提供IT基础设施资源的利用效率,提升基础设施的应用和管理水平,实现计算资源的动态优化,使平台应用易维护、易扩充。1、行业背景分析充电桩作为新能源汽车的核心基础设施,其智慧化的解决方案对......
  • 如何用css自定义滚动条?能做到所有浏览器兼容吗?想要做兼容怎么办呢?
    CSS可以自定义滚动条的样式,但是无法做到所有浏览器完全兼容。不同浏览器对滚动条样式的支持程度不同,特别是老版本浏览器。以下是如何使用CSS自定义滚动条,以及提高兼容性的方法:1.基本样式自定义(WebKit内核浏览器,例如Chrome,Safari,Edge等):::-webkit-scrollbar{w......
  • 你要是在家时,公司网站出问题了你是怎么解决的?
    如果我在家时公司网站出现问题,我会按以下步骤尝试解决:了解问题的具体情况:我会先尝试了解问题的具体表现,例如:网站完全无法访问?某些特定功能无法使用?页面加载速度非常慢?用户反馈了什么错误信息?是否有错误监控系统报警(例如Sentry,Rollbar等)?我会查看报警信息,包括错误......
  • 你有给自己制定过计划吗?怎么去落实的?
    一个好的前端开发学习计划应该包括以下几个方面:1.制定明确的目标:你想成为哪种类型的前端开发者?(例如:网页设计师、前端工程师、全栈开发者)你希望在多长时间内达到你的目标?你想学习哪些具体的技术?(例如:HTML、CSS、JavaScript、React、Vue、Angular)2.分解学习目标:将你......
  • 你知道开发好的功能要自测吗?你一般是怎么自测的呢?
    提供一些开发者常用的自测策略和方法,并解释它们的重要性:1.单元测试(UnitTests):目标:验证代码中最小的单元(例如函数、组件)是否按预期工作。方法:使用测试框架(如Jest,Mocha,Jasmine,Vitest,Cypresscomponenttesting)编写测试用例,覆盖不同的输入和预期输出,包括边界情......
  • 怎么使用HTML5实现录音的功能?
    使用HTML5实现录音功能主要依靠MediaRecorderAPI。以下是一个简单的示例,以及更详细的解释:<!DOCTYPEhtml><html><head><title>HTML5录音</title></head><body><buttonid="recordButton">开始录音</button><buttonid=&qu......
  • ssm整合怎么处理事务?
    今天来学习一下ssm怎么处理事务。在此之前先要了解事务是什么?目录1、什么是事务?2、事务的四个特性3、为什么会存在事务(事务的作用)?4、ssm整合怎么处理事务1、@Transactional的作用 2、如果不管出现什么异常都要回滚应该怎么处理?3、添加了@Transactional注解代码中......