当前位置: 首页 > news >正文

Lombok

Lombok

官网: https://projectlombok.org/

介绍

Lombok(Project Lombok)是一个三方开源Java库,它通过自动创建Java类的代码,简化了Java代码的编写过程。Lombok的目标是通过消除一些样板代码,减少Java类的冗余,提高代码的可读性和开发效率,尤其针对JavaBean、POJO。它通过在编译时期生成Java字节码来实现这些功能,而不会在运行时引入额外的库。

安装

在这里插入图片描述

使用

在Maven项目中添加Lombok依赖:

 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.26</version>
</dependency>

常用注解

@Data: 自动生成Setter和Getter方法

@Data
public class User {private String name;private String password;
}

@Setter@Getter: 自动生成Setter和Getter方法

@Setter@Getter
public class User {private String name;private String password;
}

@AllArgsConstructor: 生成全参构造方法

@AllArgsConstructor
public class User {private String name;private String password;
}

@NoArgsConstructor: 生成无参构造方法

@NoArgsConstructor
public class User {private String name;private String password;
}

@RequiredArgsConstructor: 生成必须参数构造方法

@RequiredArgsConstructor
public class User {private String name;private String password;
}

@Slf4j: 简化日志声明,可以省去手动声明日志对象的重复代码

@Slf4j
public class LogExample {public void performSomeTask() {log.error("这里有问题");}
}

@EqualsAndHashCode: 生成hashCode和equals方法,支持忽略字段等灵活配置

@EqualsAndHashCode(exclude={"id"})
public class User {private String name;private String password;
}

@ToString: 生成ToString方法

@ToString
public class User {private String name;private String password;
}

原理

在这里插入图片描述

  • 开发者主要负责标记需要使用Lombok的注解
  • Lombok框架负责在编译时生成相应的代码,Lombok框架的注解处理器是整个过程的核心,它通过操作抽象语法树实现了代码的生成和注入
  • 代码的生成是在编译时完成的,运行时生成的字节码中已经包含了Lombok生成的代码

问题

  1. 破坏了Java的封装性:Lombok生成的getter和setter方法是public的,这意味着类的内部状态可以被外部直接访问和修改,可能降低了封装性。虽然Lombok提供了一些注解(如@Getter(AccessLevel.PROTECTED))来调整可见性,袒需要开发者显式地进行配置。
  2. 可读性和维护性:自动生成的代码可能会使得代码阅读和维护变得困难,因为实际执行的代码可能在源代码中不可见
  3. 可调式性:由于生成的代码在编译时插入,而不是在源代码中直接体现,这使得在调试过程中很难直观地查看和跟踪生成的代码
  4. 兼容性:Lombok的一些功能可能对Java的版本兼容性存在一定的限制。在使用Lombok时,需要确保所使用的Lombok)版本与Java版本兼容
  5. 维护和进化:Lombok的注解处理器的实现可能不稳定,且Lombok项目的维护者是否持续更新对新版本Jva的支持也是一个考虑因素。在某些情况下,可能需要等待Lombok)库更新以适配最新的Jva版本

总结

Lombok以其独特的方式挑战了Java的传统代码书写模式,并在某些方面取得了显著的效率提升。但是,也需要开发者在使用时充分理解其背后的原理,并权衡其带来的便利性和潜在问题。

为了进一步探究Lombok的细节以及更深入的使用场景,不妨参考官方文档,或者加入相关社区交流讨论。

参考资料
Project Lombok 官方网站
Lombok GitHub 仓库
各大Java开发社区和论坛

相关文章:

  • 如何使用ssh key免密码登录服务器?
  • el-tree基础的树形节点设置节点不能选中高亮出来,对已经选中的节点设置disabled,对当前节点刚选中后设置禁用disabled
  • [React源码解析] Fiber (二)
  • mfc140.dll找不到了要怎么解决?教你多种修复mfc140.dll的方法
  • C语言——如何进行文件操作
  • [k8s系列]:kubernetes·概念入门
  • C++中 this指针、构造函数、析构函数
  • 数据结构系统刷题
  • 【vue】图片加载骨架
  • 如何做好一份全面的市场调查报告?
  • 2024年数学建模美赛 分析与编程
  • USB-C显示器:未来显示技术的革新者
  • 【Docker】linux、nginx、容器镜像三者基本概念
  • Windows系统安装OpenSSH+VS Code结合内网穿透实现远程开发
  • 【论文阅读】Long-Tailed Recognition via Weight Balancing(CVPR2022)附MaxNorm的代码
  • 网络传输文件的问题
  • 【React系列】如何构建React应用程序
  • Angular6错误 Service: No provider for Renderer2
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • Cookie 在前端中的实践
  • Cumulo 的 ClojureScript 模块已经成型
  • Git同步原始仓库到Fork仓库中
  • JAVA多线程机制解析-volatilesynchronized
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • laravel 用artisan创建自己的模板
  • Material Design
  • Python十分钟制作属于你自己的个性logo
  • Python学习之路16-使用API
  • Quartz初级教程
  • spring boot下thymeleaf全局静态变量配置
  • vuex 笔记整理
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 前端知识点整理(待续)
  • 区块链分支循环
  • 如何正确理解,内页权重高于首页?
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​补​充​经​纬​恒​润​一​面​
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (28)oracle数据迁移(容器)-部署包资源
  • (a /b)*c的值
  • (Note)C++中的继承方式
  • (Python) SOAP Web Service (HTTP POST)
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (超详细)语音信号处理之特征提取
  • (附源码)springboot教学评价 毕业设计 641310
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (十一)图像的罗伯特梯度锐化
  • (算法)硬币问题
  • (学习日记)2024.01.19
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • *2 echo、printf、mkdir命令的应用
  • .naturalWidth 和naturalHeight属性,
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法