黑豹程序员-架构师学习路线图-百科:Lombok消除冗长的java代码

本文主要是介绍黑豹程序员-架构师学习路线图-百科:Lombok消除冗长的java代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1、为什么要使用Lombok?
  • 2、Lombok的工作原理
  • 3、反对声渐渐消亡
  • 4、总结
    • 4.1、什么是Lombok?
    • 4.2、Lombok的发展历史
    • 4.3、Lombok常见的注解

在这里插入图片描述

1、为什么要使用Lombok?

现代的java项目开发都使用分层开发,MVC分层已经深入人心,而其中的数据都封装在POJO对象中。
其要求很简单,就是私有属性和其对应的get/set方法。而这些代码都是枯燥模式化的代码,IDE早发现这个特点,都支持生成这些代码。

既然可以生成,那能不能再进一步呢?生成的过程也去掉呢?而且一个POJO如果属性很多,在加上get/set类就感觉很混乱,能否都不要这些代码,却能直接用其get/set呢?

可以,Lombok就是干这个的。开发者只需写好属性,它就会自动生成每个属性的get/set,而且还不会污染类,让类看着特别清爽。

还有个特点那就更棒了,就是类的维护。实际开发时我们需求老会发生变化,这是可能就需要修改POJO。
以前虽然IDE都能生成get/set,tostring,但如果属性发生变化,就都需要重新去生成。而这时Lombok那就太方便了,只需新增或修改属性即可。

2、Lombok的工作原理

在编译期阶段,当 Java 源码被抽象成语法树 (AST) 之后,Lombok 会根据自己的注解处理器动态的修改 AST,增加新的代码 (节点),在这一切执行之后,再通过分析生成了最终的字节码 (.class) 文件,这就是 Lombok 的执行原理。

在这里插入图片描述

3、反对声渐渐消亡

随着Lombok的诞生,很多人并不习惯,有的说可读性差,有的说要安装插件,有的说影响性能,甚至有些公司禁用等等。
但随着SpringBoot项目直接集成了Lombok,反对声逐渐消亡。
个人觉得,这个简化了开发,类更清爽,特别做大型项目字段多的时候,还有就是维护方便,所以个人很喜欢。

4、总结

4.1、什么是Lombok?

Lombok 是一种 Java 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注释实现这一目的。通过在开发环境中实现 Lombok,开发人员可以节省构建诸如 getXxx()、setXxx()、toString()、hashCode() 和 equals() 这样的方法的时间。

4.2、Lombok的发展历史

  • 2009年:Lombok项目由Reinier Zwitserloot(雷尼尔·茨维特斯洛特)和Roel Spilker(罗尔·斯皮尔克)创建。最初的目标是减少Java代码中的冗余,并提高开发人员的生产力。
  • 2011年:Lombok发布了第一个稳定版本,引入了一些常用的注解,如@Getter和@Setter,用于自动生成Java Bean的getter和setter方法。
  • 2012年:Lombok发布了更多功能,包括@ToString、@EqualsAndHashCode和@NoArgsConstructor等注解,用于自动生成toString、equals、hashCode和无参构造方法。
  • 2014年:Lombok发布了1.14版本,引入了一些新的注解,如@Builder和@SneakyThrows,用于生成建造者模式和简化异常处理。
  • 2015年:Lombok发布了1.16版本,引入了一些新的注解,如@Value和@Wither,用于生成不可变对象和生成新的对象副本。
  • 2018年:Lombok发布了最新版本,增加了一些新的注解和功能,如@NonNull和@Delegate,以及对Java 10和Java 11的支持。

4.3、Lombok常见的注解

有时我们需要get有时需要set,并不是都需要,那怎么控制呢?答案:注解
@Getter 自动生成属性的get方法
@Setter 自动生成属性的set方法
@Data 自动生成属性的get/set方法
@NoArgsConstructor 无参构造方法
@AllArgsConstructor 所有参数的构造方法
@toString 调试时,打印对象属性的值

这篇关于黑豹程序员-架构师学习路线图-百科:Lombok消除冗长的java代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/293030

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06