Lombok使用与踩坑

Lombok使用与踩坑一 使用 Lombok1 在 pom 文件中引入依赖 dependency groupId org projectlombo groupId artifactId lombok artifactId optional true optional dependency

一、使用Lombok

1.在pom文件中引入依赖

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

2.IDEA安装Lombok插件

Lombok使用与踩坑

导入插件后新建模块时可以导入Lombok

Lombok使用与踩坑

3.Lombok特性

所有特性:https://projectlombok.org/features/all

常用特性:@NonNull @Slf4j @Data @AllArgsConstructor @NoArgsConstructor

注解 说明
@Slfj 注解在类,生成logger常量
@Data A shortcut for @ToString@EqualsAndHashCode@Getter on all fields, and @Setter on all non-final fields, and @RequiredArgsConstructor
@Getter/@Setter 可加在属性上,也可加在类上
@NoArgsConstructor 生成构造方法
@AllArgsConstructor
@RequiredArgsConstructor
@EqualsAndHashCode
@ToString
@NotNull 修饰属性
@Synchronized 只能用在静态和实例方法上
@Cleanup 自动生成try-finally关闭资源
@Builder 建造者模式

@Accessors用法参考博客 

4.文章推荐

https://www.cnblogs.com/heyonggang/p/8638374.html

https://www.hellojava.com/a/74973.html

二、踩坑

  • 问题:导入lombok后报错:java.lang.ExceptionInInitializerError,没有其他异常信息
  • 原因:配置时指定了版本,可能有依赖冲突
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.8</version> </dependency>
  • 解决方法:修改pom文件的lombok依赖
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>

三、为何有人不推荐使用lombok

1.侵入团队

2.使用有坑

当我们使用@Data定义一个类的时候,会自动帮我们生成equals()方法。但是如果只使用了@Data,而不使用@EqualsAndHashCode(callSuper=true)的话,会默认是@EqualsAndHashCode(callSuper=false),这时候生成的equals()方法只会比较子类的属性,不会考虑从父类继承的属性,无论父类属性访问权限是否开放。

3.影响升级

jdk版本和lombok版本升级问题,依赖冲突问题

4.破坏封装性

有些属性不能直接暴露setter方法给外界调用

以上四点只是简单概括,是从大V公众号总结来的,没有详细展开。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233375.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 分布式拒绝服务攻击是如何实现拒绝服务的_分布式拒绝服务攻击原理是什么

    分布式拒绝服务攻击是如何实现拒绝服务的_分布式拒绝服务攻击原理是什么摘要:拒绝服务(DoS)攻击是指攻击者通过某种手段,有意地造成计算机或网络不能正常运转从而不能向合法用户提供所需要的服务或者使得服务质量降低。分布式拒绝服务(DDoS)攻击则是指处于不同位置的多个攻击者同时向一个或数个目标发起攻击,或者一个或多个攻击者控制了位于不同位置的多台机器(称为傀儡机)并利用这些机器对受害者同时实施攻击。

    2025年6月26日
    3
  • 微信小程序超级大坑之40029(invalid code)

    微信小程序超级大坑之40029(invalid code)在小程序新建的时候就应该输入你正式的AppID,如果使用修改的AppID,则无法使用。jscode2session会返回{"errcode":40029,"errmsg":"invalidcode,hints:[req_id:m3yw8a0472th20]"}不能通过修改project.config.json中的AppID来实现:必须重新创建新的小程序项目。…

    2022年5月29日
    85
  • 安全工具-Sparta

    安全工具-SpartaSparta是一个集端口扫描、网络扫描、服务探测以及暴力激活成功教程等多项功能于一身的工具,kali中已经预装了该工具,可直接使用。  &gt;输入目标IP,开始扫描即可探测出开放的端口及服务  &gt;选中ssh服务,对其进行暴力激活成功教程  &gt;确认IP地址、端口、扫描服务等,上传用户名-密码字典后Run  &gt;查看扫描log,探测出一个密码被激活成功教程Hydrav8.2(c…

    2025年6月9日
    2
  • 搏一搏 单车变摩托,是时候捣鼓一下家中的小米电视机啦。[通俗易懂]

    搏一搏 单车变摩托,是时候捣鼓一下家中的小米电视机啦。[通俗易懂]事因因为家中有一台小米电视机,但是平时使用起来体验很差(1G内存,8G存储,CPU型号CortexA534核心1.5GHz),如今视频平台很多,Bilibili、爱奇艺、优酷、腾讯视频、芒果TV等平台。很多视频通过小米电视找不到,一部分原因是小米电视机的界面太炫丽,导致家中老人不太会操作,就是我用起来都觉得麻烦。想了一下,实在不行就干脆换系统。后来看到一些文章,可以更换界面,卸载一些不用的软件。当贝桌面,体验了一下。装完后,发现还不错,接近手机清爽的界面。装完主界面如下,系统自带的一些软件

    2022年6月27日
    34
  • 苹果手机数据转移到新手机_旧手机数据转移到新手机,一键免费传输

    苹果手机数据转移到新手机_旧手机数据转移到新手机,一键免费传输这款软件所有人都能用到建议收藏备用当我们换新手机时是不是很多数据需要转移很繁琐费劲电话号短信备注等等都想留着解决办法来了!!!今天推送的这款神器是腾讯旗下唯一一款零差评的app这款软件真正解决了我们平时更换手机遇到的所有痛点,没有GG无需会员软件名字:换机助手(适用于安卓iOS)01软件介绍现在随着互联网的发展,智能手机几乎人手必备,而且大家更换手机的频率越来越高,更换手机时候,…

    2022年5月24日
    59
  • jlink接口定义接stm32_图解Stm32使用jlink程序时jtag接口(SW和JTAG模式)的简化方法

    jlink接口定义接stm32_图解Stm32使用jlink程序时jtag接口(SW和JTAG模式)的简化方法用过STm32的人都知道stm32有两种常用程序的方法,用串口和jlink。串口方法和51差不多不多说,用jlink时接口引脚太多导致接口很大,很占pcb的面积,在此我就针对这个问题清晰的讲述下jlink程序时jtag接口的简化方法!希望对大家有用。!我实验的是jlinkv8和stm32f103rbt6!如果用jtag模式的话,需要接:jlink的第1脚(VDD)、第3脚(TRST对应stm32…

    2022年5月28日
    78

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号