深入理解lombok
一、Lombok是什么
Lombok项目是一种自动接通你的编辑器和构建工具的一个Java库,是帮助我们编写getter或者equals方法的一个“工具”,不需要我们再写getter、setter或者equals方法。其实他的魅力并不在于帮助我们简单的编写对应的getter或者更多的方法,还有一点在于,当我们的字段发生改变时,lombok也会对相应的getter方法进行改变。
引入依赖即可使用:
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>
二、为什么要在自己的项目中使用Lombok
要回答这个问题,仅仅知道什么是Lombok是不够的。在讲解原理之前我想再提一点 ,这也是为什么要使用Lombok的关键所在:根据Lombok的使用规则,如果想要使用Lombok就需要删除在项目中(JavaBean)存在的已经生成的getter方法setter方法以及equals和hash方法,当然Lombok也提供了对打印日志的处理。这样在使用Lombok以后就会大大减少项目中的代码量,同时由于Lombok有自动修改的功能,这也提供了项目中代码的执行效率。
综上所述,使用Lombok的两点主要原因就是:
(1)、简化冗余的JavaBean代码;
(2)、大大提高JavaBean中方法的执行效率;
三、Lombok实现原理
Lombok实现了JSR 269 API规范,javac在Java6开始支持这一规范,只要程序实现了该API,就能在javac运行的时候得到调用,那么Lombok在编译时使用的就是javac,具体流程如下:
首先是项目的源代码文件,在经过编译处理以后,lombok会使用自己的抽象语法树去进行注解的匹配,如果在项目中的某一个类中使用了lombok中的注解,那么注解编译器就会自动去匹配项目中的注解对应到在lombok语法树中的注解文件,并经过自动编译匹配来生成对应类中的getter或者setter方法,达到简化代码的目的。
四、Lombok注解详解
Lombok主要常用的注解有
@Data注解:这个注解包含范围最广,它包含@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode注解;
@NoArgsConstructor注解:生成对应的无参构造方法;
@AllArgsConstructor注解:生成对应的有参构造方法;
@Slf4j注解:在需要打印日志的类中使用,当项目中使用了slf4j打印日志框架时使用该注解,会简化日志的打印流程,只需调用info方法即可,其实就是替你生成一个log属性
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
- @Log4j:在需要打印日志的类中使用,当项目中使用了log4j打印日志框架时使用该注解,会简化日志的打印流程,只需调用info方法即可;
- @Accessors(chain = true) 生成的setter方法中返回用this代替void
五、使用Lombok可能需要注意的地方
(1)、在使用Lombok时,你的编辑器可能会报错,这时请在你的IDE中安装Lombok插件(如果使用的Idea则直接搜索Lombok插件,选择星级最高的,直接安装就是,其他Ide类同)。
深入理解lombok相关推荐
- Spring : Spring 深入理解lombok
文章目录 1.美图 2.概述 3.Lombok是什么 4.为什么使用? 5.Lombok实现原理 6.Lombok注解详解 6.1 Lombok 实现 Builder 模式 7.注意点 8.负面影响 ...
- Java开发神器Lombok的使用与原理
在面向对象编程中必不可少需要在代码中定义对象模型,而在基于Java的业务平台开发实践中尤其如此.相信大家在平时开发中也深有感触,本来是没有多少代码开发量的,但是因为定义的业务模型对象比较多,而需要重复 ...
- Lombok pojo类小神器
前言 Lombok主页 Lombok下载 Lombok引入项目之后,便可以使用 本文记录了在项目中应用Lombok时的使用案例,希望对朋友你有一些帮助. 可以去 下载jar包 maven: <! ...
- lombok的使用详解,解决@Builder.Default默认值问题
前言 Lombok是一款Java开发插件,使得Java开发者可以通过其定义的一些注解来消除业务工程中冗长和繁琐的代码,尤其对于简单的Java模型对象(POJO).在开发环境中使用Lombok插件后,J ...
- Lombok的使用详解
前言 Lombok是一款Java开发插件,使得Java开发者可以通过其定义的一些注解来消除业务工程中冗长和繁琐的代码,尤其对于简单的Java模型对象(POJO).在开发环境中使用Lombok插件后,J ...
- Lombok的使用详解(最详尽的解释,覆盖讲解所有可用注解),解决@Builder.Default默认值问题...
原文:https://blog.csdn.net/f641385712/article/details/82081900 前言 Lombok是一款Java开发插件,使得Java开发者可以通过其定义的一 ...
- lombok的使用详解(最详尽的解释,覆盖讲解所有可用注解),解决@Builder.Default默认值问题
https://blog.csdn.net/f641385712/article/details/82081900 前言 Lombok是一款Java开发插件,使得Java开发者可以通过其定义的一些注解 ...
- 【小家Java】Lombok的使用详解(最详尽的解释,覆盖讲解所有可用注解),解决@Builder.Default默认值问题
相关阅读 [小家java]java5新特性(简述十大新特性) 重要一跃 [小家java]java6新特性(简述十大新特性) 鸡肋升级 [小家java]java7新特性(简述八大新特性) 不温不火 [小 ...
- 【工具类库】Lombok简介、使用、工作原理、优缺点--最全一篇Lombok使用讲解及原理真香啊
文章目录 简介 官方介绍 Lombok使用 IntelliJ 安装 Lombok 添加maven依赖(导入 lombok 包) 解决编译时出错问题 Lombok 注解大全说明 Lombok 代码示例 ...
最新文章
- 【Graph4NLP】阿尔伯塔大学博士毕业论文:基于图结构的自然语言处理
- Davinci DM6446开发攻略——LINUX GPIO驱动源码移植
- Arduino作为服务器显示温度,基于Arduino 带LCD显示的电子温度计
- 盘点近期大热对比学习模型:MoCo/SimCLR/BYOL/SimSiam
- 【机器学习】特征工程
- JDK源码——利用模板方法看设计模式
- 多分辨率下的彩色图像分割方法
- LayaAir 对象池 laya.utils.Pool
- SQL教程数据库视频数据分析教程Sql Server|MySQL|Oracle视频教程
- 同方linux系统怎样下载软件,同方易教管理平台V2.4使用方法
- Asp.Net 5.0简介
- JNI调用dll库或so库
- 地图白话(六):街景地图
- vue导入音乐_vue-music:添加歌曲到队列add-song.vue
- 电商库存系统设计mysql_详解:电商系统库存逻辑的设计
- 极大似然估计——简述
- 儿童智能手表APP开发具备哪些功能
- 计算机音乐数字乐谱贴吧,【图片】【谱集】贴吧谱子整理【计算器音乐吧】_百度贴吧...
- 毕业一年感想~微思顾轻展望
- 不是为了赢,只是不想输
热门文章
- java对xml文件的解析_Java对XML文件的解析
- SQL比oracle卡,对比Oracle与SQL Server
- java 头尾 队列_探索JAVA并发 - 并发容器全家福
- python关联分析引擎_PowerBI x Python 之关联分析(上)
- mysql批量更新后返回id_如何批量插入Mysql并取得各自的递增ID
- sklearn常见命令和官方文档汇总
- 八十四、堆排序解决TopK问题
- 杠件受力分析 第一章 杠件受力分析
- 设计模式总结一波点点
- 直播 | ACL 2021论文解读:低资源语言场景下的跨语言文本摘要