关于使用Lombok的注意事项

SpringBoot入门教程 Lombok使用注意事项 如果对Lombok的注解不是很了解话,可能在某些细节上会遇到问题,但无论遇到什么问题其实看一下.class文件生成的内容就知道哪里出问题了。 一:@NoArgsConstructor 生成无参构造函数。 @NoArgsConstructor public class Person { private Long id; private Integer age; } 🔽 public class Person { private Long id; privat...... 阅读详情

1、Lombok简介

Lombok项目是一个Java库,它会自动插入您的编辑器和构建工具中,从而为你优化Java代码。通过注解的方式代替我们手动生成getter、setter、toString等方法。

虽然现在的IDE可以帮我们自动生成,但是整个类显的很臃肿。尤其类的属性太多时,查看属性非常不方便。使用Lombok可以使我们的代码更加简洁,可以说是程序员的福音。

官网地址:https://projectlombok.org/

2、使用Lombok的问题

使用Lombok一时爽,但是需要一些问题之后,如果不了解细节,查找原因难上加难,这可能也是一些公司不建议使用Lombok的原因。下面总结了一下遇到的几个问题。

2.1 驼峰问题

先来看一下一个案例:

public class Book {
    private String uName;
}

先来看看IDE和JDK帮我们生成的getter、setter方法:

public class Book {

    private String uName;

    public String getuName() {
        return uName;
    }

    public void setuName(String uName) {
        this.uName = uName;
    }
}

生成getter,setter方法的语法是是这样的:getXxxx,setXxx
但是当遇到案例的属性,就会特殊处理成getxxx、setxxx

与之类似属性还有如下:

public class Book {

    private String uName;
    private String AName;
    private boolean isEmpty;
    private boolean iseasy;
    private boolean aBoolean;
    private boolean BBoolean;

    public String getuName() {
        return uName;
    }

    public void setuName(String uName) {
        this.uName = uName;
    }

    public String getAName() {
        return AName;
    }

    public void setAName(String AName) {
        this.AName = AName;
    }

    public boolean isEmpty() {
        return isEmpty;
    }

    public void setEmpty(boolean empty) {
        isEmpty = empty;
    }

    public boolean isIseasy() {
        return iseasy;
    }

    public void setIseasy(boolean iseasy) {
        this.iseasy = iseasy;
    }

    public boolean isaBoolean() {
        return aBoolean;
    }

    public void setaBoolean(boolean aBoolean) {
        this.aBoolean = aBoolean;
    }

    public boolean isBBoolean() {
        return BBoolean;
    }

    public void setBBoolean(boolean BBoolean) {
        this.BBoolean = BBoolean;
    }
}

小结:

  • String uName,AName 的getter、setter会沿用类的属性即不会大小写的转化:getuName,setAName。
  • boolean isEmpty 的getter就是方法本身,setter方法会去除is:setEmpty
  • boolean iseasy的getter方法:isIseasy,settter方法为:setIseasy
  • boolean aBoolean,BBoolean的getter方法均是isxxxx,setter方法均为setxxxx。其他boolean属性的getter方法均是isXxx,setter方法均为setXxx

再来看看Lombok为我们生成的方法:

public class Book {
    private String uName;
    private String AName;
    private boolean isEmpty;
    private boolean iseasy;
    private boolean aBoolean;
    private boolean BBoolean;

    public Book() {
    }

    public String getUName() {
        return this.uName;
    }

    public String getAName() {
        return this.AName;
    }

    public boolean isEmpty() {
        return this.isEmpty;
    }

    public boolean isIseasy() {
        return this.iseasy;
    }

    public boolean isABoolean() {
        return this.aBoolean;
    }

    public boolean isBBoolean() {
        return this.BBoolean;
    }

    public void setUName(final String uName) {
        this.uName = uName;
    }

    public void setAName(final String AName) {
        this.AName = AName;
    }

    public void setEmpty(final boolean isEmpty) {
        this.isEmpty = isEmpty;
    }

    public void setIseasy(final boolean iseasy) {
        this.iseasy = iseasy;
    }

    public void setABoolean(final boolean aBoolean) {
        this.aBoolean = aBoolean;
    }

    public void setBBoolean(final boolean BBoolean) {
        this.BBoolean = BBoolean;
    }
}

看看其中和上面IDE生成的不一致的字段:boolean aBoolean;String uName。
lombok会将我们的小写转化成大写。

这样造成的问题可能会导致调用set方法是赋值失效,因为我们数据通过反射调用setter方法赋值的时候,都会按照我们IDE的这种规则。

解决方案:增加lombok.config的配置

  • 在src/main/java下增加lombok.config的文件(注:不是resources下哦)
  • 文件内容增加配置信息:lombok.accessors.capitalization=beanspec
2.2 相同的字符串不同的大小写

先看一个案例:IDE生成

public class Book {

    private String uName;
    private String uname;
    private String unamE;

    public String getuName() {
        return uName;
    }

    public void setuName(String uName) {
        this.uName = uName;
    }

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public String getUnamE() {
        return unamE;
    }

    public void setUnamE(String unamE) {
        this.unamE = unamE;
    }
}

再来看看lombok的生成:

public class Book {
    private String uName;
    private String uname;
    private String unamE;

    public String getUName() {
        return this.uName;
    }

    public void setUName(final String uName) {
        this.uName = uName;
    }
}

lombok会这把这三个属性识别成一个属性。这种lombok不提供解决方案,作者认为这是不规范的操作。官方icuess如下:

https://github.com/projectlombok/lombok/issues/2130
在这里插入图片描述

大意如下:这种修改维护的成本比较高,也会带来额外的开销。该项目只有几个贡献者和2个维护者。这种情况也并不常见,不值得花费大量的时间去支持。

3、关于使用Lombok的总结

因为种种原因有人抵触它,有人喜欢它,这就仁者见仁智者见智了。
撇开Lombok的问题,我们首先需要做的就是规范自己的编码风格,尽量不要使用类似、相近单词命名。这样也会为我们自己阅读代码带来了障碍。

所以良好的代码规范会为我们带来很多好处,无论使用什么样的工具或者类库。对于一些特别的字段处理上很有可能会出现不一致的地方,只要我们规范了代码,使用那种工具都不会带来显而易见的异常。大家可以根据自己的习惯或者团队的习惯合理的选择三方库

我们本地启动或者测试运行时可能会出现: java:找不到符号 符号:变量:log,这种的解决方案就是检查自己的IDE是否支持lombok,开启注解、下载插件、版本这几个要素。如果均是OK的,则只需要配置一行参数:-Djps.track.ap.dependencies=false
在这里插入图片描述

4、写在最后

本文只分享的遇到的两个问题,如果遇到其他问题可以是在issues中寻找,查看解决方案。

关于lombok的使用,需要的朋友可以参考这篇博文
https://blog.vicat.top/archives/%E7%94%A8lombok%E8%AE%A9java%E6%9B%B4%E7%AE%80%E6%B4%81#%E4%B8%80-%E6%A6%82%E8%BF%B0

OpenBCI脑电数据处理实战:用MNE库从Raw对象到可视化分析全流程 本文提供了使用MNE-Python库处理OpenBCI脑电数据的完整实战指南。从通过BrainFlow库获取原始数据流、创建核心的Raw对象,到进行工频滤波、带通滤波等关键预处理步骤,最后实现时域信号、功率谱密度及地形图等多种专业可视化分析,手把手教你完成脑机接口数据处理的全流程。 阅读详情

相关推荐

《缠中说禅108课》5:市场无须分析,只要看和干

喜欢吹牛皮的,在市场里最常见,例如一种以分析市场、吹牛皮为生的职业,叫什么股评、专家的。此类人不过是市场上的寄生虫,真正的猎手只会观察、操作,用嘴是打不了豺狼的。 市场就是一个狩猎场,首先你要成为一个好猎手,而一个猎手,首先要习惯于无言。如果真有什么真理,那真理也是无言的。可言说的,都不过是人类思想的分泌物,臭气熏天。真不可言说了,就无不可言,言而无言,是乃真言。 一个好的猎手,可以没有嘴巴,但一定会有一双不为外物所动的眼睛,在这眼睛下,一切如幻化般透明。要不被外物所动,则首先要不被自我所迷惑,其实..

BenRen1314的博客 800

这个字段我明明传了呀,为什么收不到 - Spring 中首字母小写,第二个字母大写造成的参数问题?

我自己从这个事件中总结出来了一点经验。在 Java 里面,给类属性取名的时候,以前我想着是只要满足小驼峰命名法就万事大吉,不会有什么问题了。。。现在我知道了,并不是说满足小驼峰就万事大吉了,如果碰到首字母小写、第二个字母大写的这种情况,还是要特别注意,尤其是当这个类还被用于序列化/反序列化时,一定要注意其处理的规范性,要写(生成)生成符合 Java Bean 规范的 set、get 方法,否则这个小小的字段在反序列化时会一直困扰着你。。

xxxzzzqqq_的博客 984

Couldn‘t find device with uuid 恢复LVM元数据 linux

Couldn't find device with uuid 恢复LVM元数据 linux欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使

m0_57559579的博客 7166

lombok使用@Data注解下的不标准驼峰导致参数获取不到的问题及解决

lombok的便捷性 在springboot的开发中,lombok是一个非常好用、智能的插件,只要装了lombok的插件/依赖,就能用注解的方式帮你完成get、set、toString等方法的编写。 比如用以下方式引入lombok的依赖: <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId>

wysghmbb的博客 7758

全国充电站分布数据

CnOpenData推出的充电站数据覆盖全国34个省份的3万条数据,包含充电站名称、省份名称、省份代码、商圈、经纬度等地理信息以及商业类型、评分、消费等衍生信息,能为城市规划、环境科学、市场分析、技术发展和社会经济研究等多个领域提供宝贵的数据支持。

Sunny9qx的博客 4023

尚硅谷Redis 7学习笔记

尚硅谷Redis 7学习笔记

不更了,主打一个陪伴 2万+

JavaBean中的get/set 的命名规范

最近的struts项目中遇到了这样的问题: 我的action中全局变量明明有getset方法,而且是自动生成的,但是在使用的时候,总是说找不到这个属性的getset方法,取不到从jsp传来的值, 原因如下:变量名为:hDeptment,在自动生成getset方法为:setHDeptment,getHDeptment。下面是解释这个问题。 (1)JavaBean 类必须是一个公共类,并将其访问

keydot2007的专栏 1079

Ubuntu22.04安装ROS2 —— ROS2 humble 详细图文教程

本文详细介绍了如何在Ubuntu22.04(Jammy)系统下配置ROS2环境,安装RO2软件包,并验证安装成功。ROS2的版本是Humble Hawksbill。:ROS是一个开源的,提供硬件抽象、设备驱动、库、工具和通信机制,支持模块化开发与集成,广泛用于机器人控制和自动化应用。ROS2 相较于 ROS1 在架构设计、通信机制和平台支持等方面做出了改进。ROS1 采用集中式主节点(Master)进行节点间通信,存在单点故障风险,且实时性和跨平台支持较弱。

weixin_49649078的博客 8799

spring框架入门--三种方式配置Bean

Spring框架入门--配置Bean,xml方式,工厂方法配置,注解配置

菜鸟一枚 5331

立创EDA手动拼板实战:当自带功能不够用,如何用‘复制粘贴’搞定异形拼版与特殊布局

本文详细介绍了立创EDA手动拼板技术在异形拼版与特殊布局中的应用实战。通过CTRL+SHIFT+V等核心操作技巧,解决混合尺寸拼板、特殊间距需求等复杂场景,提升PCB设计效率与灵活性,特别适合需要高精度控制的射频电路和医疗设备项目。

weixin_31967485的博客 385

【离线OCR】微信离线实现图片OCR文本和表格识别

基于微信本地OCR引擎(由最新版微信自动安装)。通过Python对其官方调用逻辑进行完整翻译和封装,使开发者可以用简单的API调用其强大的OCR功能。

专注于医院数据分析技术与系统开发的创作与分享。 2621

使用Lombok插件需要注意的问题

一、@Data注解 @Data注解相当于@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode这5个注解的合集。 通过官方文档,可以得知,当使用@Data注解时,则有了@EqualsAndHashCode注解,那么就会在此类中存在equals(Object other) 和 hashCode()方法,且不会使用...

weixin_33851177的博客 790

uniapp [全端兼容] - 详细实现接入使用海康威视监控云端显示及控制功能,网站集成安装海康监控及实时监控显示、摄像头控制,实时推流、回放、放大缩小画面、视频画面截图、截屏抓拍及播放器解决延迟教程

uniapp,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,vue,海康威视,海康监控,摄像头监控,实时监控画面,海康插件,无法连接,报错,uniApp对接海康处理接口认证规则,监控实时预览和回放功能,海康api接口,安全认证,海康开放平台,官方文档,播放海康摄像头的监控视频,海康实时监控播放详细步骤,web,黑屏,视频播放,回放,视频流地址,取流协议,视频sdk播放,hik,rtsp,rtmp,hls,ws,网站,网页,h5页面,后台管理系统,对接海康监控设备

🏆 前端领域优质创作者 1万+

lombok通常使用注解及注意事项

简介:lombok 提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码。 1.lombok插件安装 使用 lombok 是需要安装插件的,如果不安装,IDE 则无法解析 lombok 注解。 2.常用注解 @Data 注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toSt...

weixin_38680917的博客 474

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Lombok使用注意事项

文章目录准备Lombok Maven依赖getter/setter问题Idea getter/setter默认模板生成tipsMybatis中getter/setter解析方式Lombok getter/settergetter/setter问题总结Lombok @Accessors(chain=true)问题解决办法@EqualsAndHashCode解决办法 callSuper = true@Data问题 准备 Lombok Maven依赖 <dependency> <grou

FromZeroJiYuan的博客 1979

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

java lombok.getter_详解lombok @Getter @Setter 使用注意事项

前言:半夜睡不着觉,把星星哼成歌,只好到csdn寻找另一个梦境。。。。。lombok是一个帮助简化代码的工具,通过注解的形式例如@Setter @Getter,可以替代代码中的getter和setter方法,虽然eclipse自带的setter、getter代码生成也不需要我们手动的去敲写,但是使用@Setter @Getter这样的注解,能够使我们的代码看上去更加的简洁、优雅。lombok下有许...

weixin_35565325的博客 1419

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Lombok详细使用说明及其注意事项和Lombok注解详解

​ Project Lombok 是一个 Java 库,它会自动插入编辑器和构建工具,为您的 Java 增添趣味。永远不要再写另一个 getter 或 equals 方法,使用一个注释,您的类有一个功能齐全的构建器,自动化您的日志记录变量等等。Lombok 的官方网站为 https://projectlombok.org/。Lombok 的缺点是它对编译器的支持不够友好,有时候可能会导致编译器的报错、警告和 IDE 的智能提示问题。

qq_62357662的博客 1026

JavaWeb——Mybatis-入门(6/6)-lombok工具包介绍(概述与常用注解、在项目中使用 Lombok、Lombok 原理、使用 Lombok 的注意事项)

功能简介Lombok 是一个实用的 Java 库,通过简单注解自动生成实体类中常用方法,如构造器、getset方法、equalshashCode方法、toString方法等,还能自动生成日志变量,简化 Java 开发过程,提高开发效率。常用注解介绍注解作用为所有的属性提供get/set方法@ToString会给类自动生成易阅读的toString方法根据类所拥有的非静态字段自动重写equals方法和hashCode方法@Data。

li13437542099的博客 1247

LomBok中@Synchronized的使用注意事项

LomBok中@Synchronized的使用注意事项 1、@Synchronized可以直接修饰静态和非静态的方法 2、@Synchronized修饰的方法,不能通过new对象后调用,应通过@Resource,@Autiwired注解获取对象后调用才生效

qq_44847649的博客 622

lombok使用时一些注意事项

lombok使用时一些注意事项 ** lombok常用注解:** @Data: 自动生成get,set,toString,equals,HashCode方法 @AllArgsConstructor: 有参构造 @NoArgsConstructor: 无参构造 @EqualsAndHashCode(callSuper = true) :在生成equals,HashCode方法时,把继承的父类成员变量也包含在内, 在子类中使用 @ToString(callSuper = true): 在生成toString方法

weixin_45239670的博客 771

使用lombok插件注意事项

1.下载lombok插件,打开idea==>Plugins==>Marketplace,搜索lombok插件,下载完成重启 idea 2.下载jar包或者引入依赖 <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId&g

brantykl的博客 710

lombok详解及其注意事项

Lombok是一个通过注解的形式或简单关键字简化和消除Java应用程序中一些必须但是重复或显得臃肿的样板代码的实用工具,使用Lombok会在编译阶段根据相应的注解生成对应的字节码,使编译前的源码看起来更加简洁,但功能不变。 使用前导包如下 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version&

荒的博客 367

lombok @Getter @Setter 使用注意事项

lombok是一个帮助简化代码的工具,通过注解的形式例如@Setter @Getter,可以替代代码中的getter和setter方法,虽然eclipse自带的setter、getter代码生成也不需要我们手动的去敲写,但是使用@Setter @Getter这样的注解,能够使我们的代码看上去更加的简洁、优雅。 lombok下有许多常用注解,这里不过多赘述,主要讲@Getter和@Setter的一个注意点。 package com.lemon.zuul.config; import lombok.

weixin_57763462的博客 1003

lombok @Getter @Setter 使用注意事项

前言:半夜睡不着觉,把星星哼成歌,只好到csdn寻找另一个梦境。。。。。lombok是一个帮助简化代码的工具,通过注解的形式例如@Setter @Getter,可以替代代码中的getter和setter方法,虽然eclipse自带的setter、getter代码生成也不需要我们手动的去敲写,但是使用@Setter @Getter这样的注解,能够使我们的代码看上去更加的简洁、优雅。lombok下有许...

kiana168的博客 6万+

Lombok使用注意事项:避坑指南

本文总结了使用Lombok时的注意事项和避坑指南。重点包括版本兼容性问题(IDE和依赖库)、注解使用规范(避免滥用和作用范围)、调试维护挑战(调试可视化和团队协作)、性能影响(编译和运行时)以及与其他工具的集成问题(代码检查、生成工具和文档工具)。建议合理使用Lombok注解,确保团队统一规范,并针对不同场景调整配置,以充分发挥其优势并规避潜在风险。

fykam的博客 1798

springboot--lombok注意事项

springboot里面有个非常好用的插件,lombok,它可以是你的代码更简洁,帮你封装好多实用方法,比如get,set和log方法。接下来我们就来分析下lombok的使用注意事项: 1.要像使用lombok可以在idea工具上安装lombok插件,也可以直接引用pom。<dependency><groupId>org.projectlombok</groupId&...

205
上一篇: LiteFlow规则引擎的入门
下一篇: 设计模式之责任链模式
智_永无止境
博客等级 码龄10年 803粉丝 403原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智_永无止境

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值