一文搞懂Lombok Plugins使用与原理

在这里插入图片描述

目录

一文搞懂Lombok使用与原理

  • 1.前言
  • 2.什么是Lombok
  • 3. IntelliJ安装Lombok
    • 3.1通过IntelliJ的插件中心安装
    • 3.2在项目中使用Lombok Plugins
  • 4.Lombok 注解大全说明
    • 4.1POJO类常用注解
    • 4.2其他注解
  • 5.Lombok常见问题
  • 6.总结
  • 7.参考


文章所属专区 超链接


1.前言

2.什么是Lombok

Lombok是一款强大的Java工具,主要用于简化Java开发过程,尤其是对于简单的Java对象(POJO)。它通过注解的方式,帮助开发者消除Java的冗长代码,如getter、setter、equals、hashCode等方法,从而大大提高开发效率

3. IntelliJ安装Lombok

需要注意的是:IDEA 2020.3版本内置了lombok插件,所以无需在IntelliJ额外安装了,可能会出现其他问题!!!

3.1通过IntelliJ的插件中心安装

setting->Plugins->搜索Lombok Plugins 安装,重启即可
在这里插入图片描述

3.2在项目中使用Lombok Plugins

在maven中,在相关pom文件直接加入依赖

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

4.Lombok 注解大全说明

4.1POJO类常用注解

@Data:注解在类上,相当于同时使用了@ToString、@EqualsAndHashCod- e、@Getter、@Setter 和@RequiredArgsConstrutor 这些注解,对于 POJO 类十分有用
@ToString :这个注解可以使类自动覆写 toString 方法。在使用时,你可以添加其他参数,例如 @ToString(exclude=”id”) 表示排除id属性,或者 @ToString(callSuper=true, includeFieldNames=true) 表示调用父类的 toString 方法,包含所有属性。
@Getter/@Setter:这两个注解可以为属性生成 getter 和 setter 方法。在使用时,你可以选择访问范围,比如是否公开所有属性,或者只对某些属性进行getter和setter。
@NonNull:这个注解可以用于方法参数,它会在方法内部对参数进行非空判断,如果参数为空,则会抛出 NullPointerException。
@Cleanup: 这个注解可以用于局部变量,它会在变量离开作用域前自动清理资源。
@EqualsAndHashCode:这个注解可以使类自动生成 equals 方法和 hashCode 方法。在使用时,你可以选择是否覆盖父类的 equals 和 hashCode 方法,以及是否包含哪些属性。
@Builder:对于加了@Builder注解的方法,可以知道,编译后这个类多了一个builder()方法,以及一个静态内部类。通过这个注解可以在类上创建一个对象,并且可以链式的进行赋值。

import lombok.Builder;
import lombok.ToString;@Builder
@ToString
public class User {private String name;private int age;private String email;
}ser user = User.builder().name("Tom").age(25).email("tom@example.com").build();

4.2其他注解

@NoArgsConstructor:这个注解用于在类上,这个注解可以生成无参构造方法。使用方法是在类上直接使用该注解即可。示例如下:
@RequiredArgsConstructor:这个注解同样用于在类上,但是它要求所有的构造方法参数都必须被标注。使用方法是在类上直接使用该注解即可。
@AllArgsConstructor:这个注解也用于在类上,与@RequiredArgsConstructor类似,但是它要求所有的构造方法参数都必须被标注,包括那些没有在类中声明的参数。示例如下:
@Value:用在类上,是@Data 的不可变形式,相当于为属性添加 final 声明,只提供 getter 方法,而不提供 setter 方法
@SneakyThrows:自动抛受检异常,而无需显式在方法上使用 throws 语句
@Log:根据不同的注解生成不同类型的 log 对象,但是实例名称都是 log,有六种可选实现类
@CommonsLog Creates log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);
@Log Creates log = java.util.logging.Logger.getLogger(LogExample.class.getName());
@Log4j Creates log = org.apache.log4j.Logger.getLogger(LogExample.class);
@Log4j2 Creates log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);
@Slf4j Creates log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
@XSlf4j Creates log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);

5.Lombok常见问题

Lombok常见问题
最全一篇Lombok使用讲解,及原理,真香啊
java lombok注解字段默认值 lombok常用注解

6.总结

Lombok是一款Java开发插件,它提供了一系列的注解,这些注解可以帮助开发者消除Java开发中的冗长和繁琐的代码,尤其对于简单的Java模型对象(POJO)。

7.参考

十分钟搞懂Lombok使用与原理
最全一篇Lombok使用讲解,及原理,真香啊
java lombok注解字段默认值 lombok常用注解

给个三连吧 谢谢谢谢谢谢了
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/263944.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

办公自动化-批量更新tar包内文件

最近工作有点忙&#xff0c;学习的时间也少了&#xff0c;为了提高工作效率&#xff0c;有时候我们需要自己写一些提高办公处理效率给的工具或者脚本或者程序。 比如&#xff0c;我目前遇到的一个事项&#xff0c;需要更新很多个tar包文件&#xff0c;把tar包内的某个文件替换…

游戏提示找不到d3dx10_43.dll怎么办?5种方法教你如何修复

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“缺少d3dx10_43.dll文件”。这个错误提示通常出现在运行某些游戏或应用程序时&#xff0c;它意味着系统无法找到所需的动态链接库文件。本文将详细介绍d3dx10_43.dll文件的作用以及导致其丢…

logstash插件简单介绍

logstash插件 输入插件(input) Input&#xff1a;输入插件。 Input plugins | Logstash Reference [8.11] | Elastic 所有输入插件都支持的配置选项 SettingInput typeRequiredDefaultDescriptionadd_fieldhashNo{}添加一个字段到一个事件codeccodecNoplain用于输入数据的…

构建linux系统的强有力工具buildroot

目录 01. buildroot简介 1.1简介 1.2 源码下载 1.3 buildroot版本更新介绍 02. 实操演示 2.1 buildroot源码目录层级的简介 2.2 实操演示 03. 结语 01. buildroot简介 1.1简介 Buildroot是一个嵌入式Linux系统的工具链&#xff0c;它用于构建嵌入式设备的根文件系统。…

Kubernetes里的DNS;API资源对象ingress;Kubernetes调度;节点选择器NodeSelector;节点亲和性NodeAffinity

Kubernetes里的DNS K8s集群内有一个DNS服务&#xff1a; kubectl get svc -n kube-system |grep dns测试&#xff1a; 在tang3上安装bind-utils,目的是安装dig命令 yum install -y bind-utils apt install dnsutils #ubuntu上 解析外网域名 dig 10.15.0.10 www.baidu.com…

模型 心流

本系列文章 主要是 分享模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。完全投入其中。 1 心流的应用 1.1 优秀运动员的心流体验 迈克尔乔丹&#xff08;Michael Jordan&#xff09;&#xff1a;篮球之神乔丹在比赛中经常进入心流状态&#xff0c;他曾表示&#xff…

第四节JavaScript 条件语句、循环语句、break与continue语句

一、JavaScript条件语句 在通常的代码中&#xff0c;我们有一些需要决定执行不同动作&#xff0c;这就可以在代码中使用条件语句来完成。 下面是我们常使用的条件语句&#xff1a; if语句&#xff1a;只有当指定条件是true时&#xff0c;执行条件内代码。if…else语句&#…

Linux下C++动态链接库的生成以及使用

目录 一.前言二.生成动态链接库三.使用动态链接库 一.前言 这篇文章简单讨论一下Linux下如何使用gcc/g生成和使用C动态链接库&#xff08;.so文件&#xff09;。 二.生成动态链接库 先看下目录结构 然后看下代码 //demo.h#ifndef DEMO_H #define DEMO_H#include<string&…

【深度学习】强化学习(四)强化学习的值函数

文章目录 一、强化学习问题1、交互的对象2、强化学习的基本要素3、策略&#xff08;Policy&#xff09;4、马尔可夫决策过程5、强化学习的目标函数6、值函数1. 状态值函数&#xff08;State Value Function&#xff09;a. 状态值函数的定义b. 贝尔曼方程&#xff08;Bellman Eq…

class069 从递归入手三维动态规划【算法】

class069 从递归入手三维动态规划 code1 474. 一和零 // 一和零(多维费用背包) // 给你一个二进制字符串数组 strs 和两个整数 m 和 n // 请你找出并返回 strs 的最大子集的长度 // 该子集中 最多 有 m 个 0 和 n 个 1 // 如果 x 的所有元素也是 y 的元素&#xff0c;集合 x 是…

深入浅出分析kafka客户端程序设计 ----- 生产者篇----万字总结

前面在深入理解kafka中提到的只是理论上的设计原理&#xff0c; 本篇讲得是基于c语言的kafka库的程序编写&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 首先要编写生产者的代码&#xff0c;得先知道生产者的逻辑在代码上是怎么体现的 1.kafka生产者的逻辑 …

深度学习——第4.1章 深度学习的数学基础

第4章 深度学习的数学基础 目录 4.1 向量 4.2 求和符号 4.3 累乘符号 4.4 导数 4.5 偏导数 4.6 矩阵 4.7 指数函数和对数函数 注意&#xff1a;4.6和4.7位于4.2章 第4章 深度学习的数学基础 本章总结一下机器学习所需的数学知识&#xff0c;同时介绍如何在Python中使用…