【Lombok】lombok已知的坑,记录
关于lombok
lombok 这个插件现在的使用率应该是很高的了,虽然偶尔也听说到有公司禁止使用lombok,说会存在什么样的问题,但耐不住它是真的香。
(主要是因为也不知道具体它存在什么样的坑,如果是明确的坑,绕得过就绕过就好了,绕不过就没办法了)
影响中说引入 lombok后,如果作为组件对外提供,就要强制使用方也引入lombok,太过霸道,如此一种说法来禁止使用lombok,在我们大多数项目上,这种说法多少也站不住脚,因为引入一下lombok能咋的!
直到今天看到关于lombok明确的一个坑,记录下来,看得到的坑,就不再让人害怕了。
具体如下:
关于lombok 的 Setter-Getter方法的坑
@Data public class DemoDto{ private String xName; ....其他属性 }
如果以上例子,DeomDto 有一个属性 xName, 首字母小写,第二个字母大写。
类似于这种情况,可能是会有坑的
因为:Lombok对于第一个字母小写,第二个字母大写的属性生成的get-set方法和Mybatis以及idea或者说是Java官方认可的get-set方法生成的不一样:
@Data public class DemoDto{ private String xName; ....其他属性 } public class DemoApp { // 使用 @Data 注解生成的 get, set 方法, X 是大写的 DemoDto xx = new DemoDto(); xx.getXName(); // 用idea生成的 get, set 方法, x 是大写的 (官方认可的方式就是 小写的,所以 Idea, mybatis 也是小写的) DemoDto xx = new DemoDto(); xx.getxName(); }
以上,如果使用lombok注解,并且又使用 mybatis 入库数据。就会因为 get / set 方法不一致,导致数据写不进,或读不到。
坑,由此诞生。
知道坑在这里,绕过它就行了。
针对这种特殊一点的属性,用 idea 生成 get / set 方法就行了。其它还是可以用 lombok 的。
解决方案:
- 1、修改属性名字,让第二个字母小写,或者说是规定所有的属性的前两个字母必须小写
- 2、如果数据库已经设计好,并且前后端接口对接好了,不想修改,那就专门为这种特殊的属性使用idea生成get-set方法复制代码
参考文章: https://mp.weixin.qq.com/s/KV09pB_JHEkgun-u-NGijw (Lombok 造成的翻车事故,太坑了!)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南