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)
上一篇 2025年7月25日 下午2:01
下一篇 2025年7月25日 下午2:22


相关推荐

  • Navicat Premium 12连接Oracle时提示oracle library is not loaded的问题解决

    Navicat Premium 12连接Oracle时提示oracle library is not loaded的问题解决笔者使用的NavicatPremium12启动界面截屏:请注意是64位的。笔者win764位系统。连接Oracle时提示“oraclelibraryisnotloaded”。解决方法:1.前往“http://www.oracle.com/technetwork/database/database-te…

    2022年5月28日
    155
  • 【n8n 入门系列】10 分钟部署 n8n,手把手教你搭第一个自动化工作流,小白可学!

    【n8n 入门系列】10 分钟部署 n8n,手把手教你搭第一个自动化工作流,小白可学!

    2026年3月15日
    3
  • Java学习路线(完整详细版)超详细

    一门永不过时的编程语言——Java软件开发。Java编程语言占比:据官方数据统计,在全球编程语言工程师的数量上,Java编程语言以1000万的程序员数量位居首位。而且很多软件的开发都离不开Java编程,因此其程序员的数量最多。而在以Java编程为核心的开发领域中,javaEE程序员的需求量10年来一直居于首位!Java工程师就业:1.通过各大招聘网站统计,全国海量公司都在招聘J…

    2022年4月11日
    85
  • 手把手教你如何在Ubuntu系统中安装Pycharm

    手把手教你如何在Ubuntu系统中安装PycharmPython 进阶者 18 06 1916 21 前几天带大家一起安装了 Ubuntu14 04 系统 没来得及上车的伙伴可以戳这篇文章 手把手教你在 VMware 虚拟机中安装 Ubuntu14 04 系统 今天小编带大家一起在 Ubuntu14 04 中安装 Pycharm 具体的教程如下 1 首先在主目录下创建 software 文件夹 此时该文件夹为空文件夹 这个文件夹下用于放置安装软件 当然这

    2026年3月27日
    2
  • java 卸载_java安装与卸载[通俗易懂]

    java 卸载_java安装与卸载[通俗易懂]1.安装JDK进行安装,安装过程中会有两次选择安装目录的时候,第一次选择的是jdk(java开发工具包),第二次选择的是jre(java的运行环境)我的安装目录:【我都使用的默认目录,占用内存并不大】jdk的C:\ProgramFiles\Java\jdk1.8.0_281\jre的C:\ProgramFiles\Java\jdk1.8.0_2812.设置环境变量1)JAVA_HO…

    2022年5月19日
    37
  • STL库简述

    STL库简述STL简述STL库包含六个大类:容器库算法库迭代器库配置器(allocator)适配器(adaptor)仿函数(函数对象)其中后四个类主要为前两个类服务。其中使用频率最高的就是容器库,迭代器库,算法库。容器库为我们提供了存储数据的数据结构,算法库则是我们操作数据结构的算法,迭代器库作为容器库和算法库的黏合剂。容器库容器库整体分为序列型容器,关联型容器,容器适配器。1.序列型容器主要包括list,vector,deque,set。以vector作为学习实例:S

    2022年10月11日
    4

发表回复

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

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