SpringBoot开发效率必备工具—lombok

news2024/11/16 3:25:30

        由于编码过程中,以上都是一些重复动作,模板代码。每次都手动生成既浪费时间,又增加了大量的冗余代码。我们可以使用lombok插件来解决这个问题。使我们的编码效率得到大幅度的提高!

一、安装 lombok

maven仓库官方地址:  Maven Repository: Search/Browse/Explore (mvnrepository.com)

 以InelliJ IDEA为例,先要安装lombok插件,然以再引入依赖:

dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
   <optional>true</optional>
</dependency>

        SpringBoot项目里不需要加入版本号,springBoot父项目会代为管理。如果是其他项目请自行添加版本号!

二、使用lombok

应用:

  • @Data:根据成员变量生成get和set方法,@Data注解,将为我们在编译期自动生成:成员变量的get和set方法;equals方法;canEqual方法;hashCode方法;toString方法。
  • @AllArgsConstructor:根据成员变量生成类的构造函数,@AllArgsConstructor注解将为我们在编译期自动生成:全参构造函数,有全参构造函数注解,自然就有无参构造函数注解:NoArgsConstructor注解。
  • 重写toString()和hashCode方法。
  • @Slf4j 注解 : 引入日志框架logFactory,用来打印日志。
  • @Builder注解。在Java类上使用Builder注解之后,我们可以使用如下代码为对象属性赋值。

    LombokPOJO lombokPOJO = LombokPOJO.builder()
            .name("xiaobai")
            .age(3)
            .build();

上图左侧是使用lombok注解Data,右侧是java字节码class文件反编译结果。

三、lombok优点和缺点

优点:

①、减少了样板代码:Lombok通过注解自动生成常见的Java类方法(如getter、setter、构造函数等),从而减少了编写样板代码的工作量。这可以提高开发效率,使代码更加简洁易读。

②、简化了数据对象的创建:使用@Data注解可以自动生成所有字段的getter和setter方法,并且还可以生成equals、hashCode和toString方法。这样,创建和维护数据对象变得更加容易。

③、支持链式调用:使用@Builder注解可以生成一个建造者模式的构造器,可以通过链式调用设置对象的属性。这种方式可以提高代码的可读性和可维护性。

缺点:

①、有侵入性 ;②、对高版本的JDK不兼容。

"Lombok显示出有入侵性"通常指的是Lombok在代码中产生的一种依赖关系。具体来说,当使用Lombok注解时,编译器会将这些注解解析为相应的代码,并插入到生成的字节码中。这就导致了对于使用Lombok的项目来说,Lombok成为了一个必要的构建依赖项。

这种依赖关系有时被认为是"入侵性"的,原因如下:

  1. 版本兼容性:Lombok与IDE或构建工具之间可能存在版本兼容性问题。如果IDE或构建工具没有正确支持或配置Lombok,可能会导致编译错误或其他问题。
  2. 项目可移植性:由于使用了Lombok的注解,项目变得依赖于Lombok库。这意味着如果将项目迁移到不支持Lombok的环境中,代码可能无法正常编译和工作。
  3. 阅读和理解代码的难度:由于Lombok自动生成了代码,源代码中实际执行的操作可能会被隐藏。这可能会导致阅读和理解代码的困难,特别是对不熟悉Lombok的开发人员来说。

        尽管Lombok有一些潜在的入侵性问题,但它仍然是广泛使用的Java开发工具,可以显著减少代码量并提高开发效率。在决定使用Lombok时,开发团队应该权衡其带来的便利性和潜在的风险,并确保正确配置和管理Lombok依赖。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/907110.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

赴日IT工作 平时接私活开发能去日本搞个IT公司吗?

有小伙伴问&#xff0c;我平时也会接一些私活开发项目&#xff0c;可以直接去日本搞一个IT公司吗&#xff1f;首先给出まとめ&#xff08;总结&#xff09;&#xff0c;如果你没有日本项目经验的话建议先找个会社试试&#xff0c;如果有项目经验的话&#xff0c;那你把前老板的…

leetcode:字符串相乘(两种方法)

题目&#xff1a; 给定两个以字符串形式表示的非负整数 num1 和 num2&#xff0c;返回 num1 和 num2 的乘积&#xff0c;它们的乘积也表示为字符串形式。 注意&#xff1a;不能使用任何内置的 BigInteger 库或直接将输入转换为整数。 示例 1: 输入: num1 "2", nu…

在线转换器有哪些优势?在线Word转PDF操作分享

我们如果想要将两者不同格式文件进行格式转换&#xff0c;就需要下载安装转换器。如果出门带的设备没有安装转换软件客户端&#xff0c;就无法使用&#xff0c;会比较麻烦。现在有了在线转换工具&#xff0c;只需要打开相应的网页就可使用&#xff0c;那么在线Word转PDF的操作是…

接口自动化yaml文件读取与写入

前言 在走进yaml文件之前大家应该都很想知道他是用来干嘛的&#xff1f; 是的是的&#xff0c;他是用来做接口自动化测试的。 我们一起来学习他吧&#xff01;——&#xff08;一定要收藏带走哦❤&#xff09; 1、yaml文件有什么作用呢&#xff1f; ①可作为配置文件使用—…

基于java SpringBoot+Vue+html 的大学生体质测试管理系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 简介效果图系统首页模块管理员功能模块用户功能模块教师功能模块 部分源码源码下载地址 简介 本…

如何恢复指定电脑分区数据?数据恢复有它

如何恢复指定电脑分区数据&#xff1f;恢复指定电脑分区数据通常是指在电脑硬盘上的某个特定分区中丢失的数据&#xff0c;经过一定的操作将这些数据重新找回的过程。 图片来源于网络&#xff0c;如有侵权请告知 这通常涉及使用恢复软件来扫描和检测分区中丢失的文件&#xf…

第六次作业 运维高级 docker容器

1.安装docker服务&#xff0c;配置镜像加速器 卸载旧版本 yum remove docker docker-common docker-selinux docker-engine使用yum源安装 &#xff08;1&#xff09;安装Docker所需要的一些工具包 yum install -y yum-utils&#xff08;2&#xff09; 建立Docker仓库 (映射…

LeetCode——二叉树篇(六)

刷题顺序及思路来源于代码随想录&#xff0c;网站地址&#xff1a;https://programmercarl.com 106. 从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&…

【PCIE体系结构十七】PCIE电源管理之PCI-PM

&#x1f449;个人主页&#xff1a;highman110 &#x1f449;作者简介&#xff1a;一名硬件工程师&#xff0c;持续学习&#xff0c;不断记录&#xff0c;保持思考&#xff0c;输出干货内容 参考书籍&#xff1a;《PCI.EXPRESS系统体系结构标准教材 Mindshare》 目录 设…

14. 利用Canvas自制时钟组件

1. 说明 在自定义时钟组件时&#xff0c;使用到的基本控件主要是Canvas&#xff0c;在绘制相关元素时有两种方式&#xff1a;一种时在同一个canvas中绘制所有的部件元素&#xff0c;这样需要不断的对画笔和画布的属性进行保存和恢复&#xff0c;容易混乱&#xff1b;另一种就是…

【C++】做一个飞机空战小游戏(十二)——游戏源代码、音效、图标等资源文件

[导读]本系列博文内容链接如下&#xff1a; 【C】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动【C】做一个飞机空战小游戏(三)——getch()函数控制任意造型飞机图标移动 【C】做一个飞…

基于微信小程序的短文作文写作竞赛管理系统

随着世界经济信息化、全球网络化的到来推动信息线上管理的飞速发展&#xff0c;为短文写作竞赛行业的改革起到关键作用。若想达到安全&#xff0c;快捷的目的&#xff0c;就需要拥有信息化的组织和管理模式&#xff0c;建立一套合理、畅通、高效的短文写作竞赛管理系统小程序。…

js中的正则表达式(一)

目录 1.什么是正则表达式 2.正则表达式在JavaScript中的使用场景: 3.正则表达式的语法&#xff1a; 1.什么是正则表达式 正则表达式(Regular Expression&#xff09;是用于匹配字符串中字符组合的模式。在JavaScript中&#xff0c;正则表达式也是对象通常用来查找、替换那些符…

亚马逊搜索关键词下单怎么操作

亚马逊鲲鹏系统可以根据产品关键词搜索后进行下单购买&#xff0c;多个亚马逊买家号搜索关键词下单可以帮助关键词上首页&#xff0c;具体操作如下&#xff1a; 首先需要先准备好一批能下单的买家账号及代理ip&#xff0c;准备好之后就可以设置需要下单的关键词及asin进行货比…

由于找不到concrt140.dll,无法继续执行代码怎么办

今天我想和大家分享一下我在修复concrt140.dll文件过程中的经验。作为一名程序员&#xff0c;我们经常会遇到各种各样的问题&#xff0c;而这次我所遇到的这个问题对我来说是一个挑战。在经过一番努力之后&#xff0c;我终于找到了解决方法&#xff0c;并且成功地修复了concrt1…

Markdown 基本语法

风无痕 August 21,2023 总览 几乎所有 Markdown 应用程序都支持 John Gruber 原始设计文档中列出的 Markdown 基本语法。但是&#xff0c;Markdown 处理程序之间存在着细微的变化和差异&#xff0c;我们都会尽可能标记出来。 标题&#xff08;Headings&#xff09; 要创建标…

信息安全/网络安全专业好不好?

​本人信息安全专业毕业&#xff0c;在甲方互联网大厂安全部与安全乙方大厂都工作过&#xff0c;有一些经验可以供对安全行业感兴趣的人参考。 或许是因为韩商言让更多人知道了CTF&#xff0c;也或许是因为网络安全越来越受国家重视&#xff0c;安全最近愈加火爆了。当然&…

司徒理财:8.21黄金空头呈阶梯下移!今日操作策略

黄金走势分析 盘面裸k分析&#xff1a;1小时周期的行情局部于1896附近即下行通道上轨附近录得一系列的K线呈震荡下行并筑圆顶&#xff0c;上轨压制有效&#xff0c;下行通道并未突破&#xff0c;后市建议延续看下行。4小时周期局部录得一系列的纺锤线呈震荡&#xff0c;但行情整…

ppt怎么做流程图?一文详解如何在ppt上绘制流程图!

ppt怎么做流程图&#xff1f;ppt制作流程图的方法是什么&#xff1f;本文将介绍2个在PPT中做流程图的方法&#xff0c;一起往下看吧。 方法一&#xff1a;利用PowerPoint自带功能 &#xff08;1&#xff09;使用SmartArt功能制作流程图 打开Microsoft PowerPoint并新建一…

测试Qt是否安装成功

1.打开Qt软件 选择新建项目,new 选择基类时&#xff0c;一次使用选择QWigget空白窗口&#xff0c;还有2种&#xff0c;带菜单栏的窗口和对话框窗口。选中Generate form会生成图形界面&#xff0c;组件直接拖拉&#xff0c;不需要自己编写。 运行结果&#xff1a;