Java工具包——Lombok

news2024/11/15 19:46:48

目录

1. maven仓库手动导入依赖+注解

1.1  maven仓库引入依赖

1.2  在类上使用@Data注解

1.3  在属性上使用@Getter与@Setter注解

2. EditStarters插件+注解

2.1 安装EditStarters插件

2.2 在pom.xml中进行操作

2.3 在java对象类中使用注解

3. lombok工具使用结果查看

3.1 手动package

3.2 查看文件内容


在Spring项目中创建java对象,

如果使用手动生成getter、setter、toString等方法提供调用接口,

会导致代码修改成本与复杂度大大增加;

lombok是一个Java工具库,通过添加注解的方式简化了Java的开发;

接下来简单介绍lombok的使用方法;

使用lombok有两种方法:

(1)maven仓库手动导入依赖+注解;

(2)EditStarters插件+注解;

1. maven仓库手动导入依赖+注解

1.1  maven仓库引入依赖

链接如下:

https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.24https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.24icon-default.png?t=N7T8https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.24

copy至pom.xml文件中即可:

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.24</version>
    <scope>provided</scope>
</dependency>

注:勿忘在maven面板中进行刷新:

1.2  在类上使用@Data注解

在java类上增加@Data注解

package com.example.demo.controller;

import lombok.Data;

import java.util.Date;

@Data
public class MessageInfo {
    private String from;
    private String to;
    private String message;
    private Date CreateTime;
}

        此时在对应的Controller中增加相应的获取属性的get方法,即使没有显式编写相关代码,但可见可以成功调用: (.getFrom()方法未标红报错)

package com.example.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RequestMapping("/message")
@RestController
public class MessageController {
    @RequestMapping("/publish")
    public Boolean publishMessage(MessageInfo messageInfo){
        String from = messageInfo.getFrom();
        return false;
    }
    @RequestMapping("/getMessageList")
    public List<MessageInfo> getMessageList(){
        return null;
    }
}

(请忽略该controller的业务逻辑,此处仅用于辅助展示lombok作用) 

 @Data注解就是lombok提供的通过注解自动生成属性的get与set方法,可避免修改接口属性导致需修改其对应的get与set方法造成的麻烦,同时也可以消除冗余代码;

1.3  在属性上使用@Getter与@Setter注解

@Data注解修饰类时,表示提供该类所有属性的get与set方法,这对于某些属性不希望被获取是不够灵活的,故而可以在属性上使用@Getter与@Setter注解,以实现面向属性生成get与set方法

package com.example.demo2.controller;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.Date;

@ToString
public class MessageInfo {
    @Getter @Setter
    private String from;
    @Getter @Setter
    private String to;
    private String message;
    private Date CreateTime;
}

以上代码的含义为:属性from支持获取与写入,to支持获取; 

注:附lombok相较于@Data更细颗粒度的注解有:

注解

作用

@Getter自动添加getter方法
@Setter自动添加setter方法
@ToString自动添加toString方法
@EqualAndHashCode自动添加equals和hashCode方法
@NoArgsConstructor自动添加无参构造方法
@AllArgsConstructor自动添加全属性构造方法,顺序按照属性的定义顺序
@NonNull属性不能为null
@RequireArgsConstructor自动添加必须属性的构造方法,final+@Null的属性为必须

@Data =

@Getter + @Setter +@ToString +@ EqualAndHashCode

+@ RequireArgsConstructor + @ NoArgsConstructor;  

2. EditStarters插件+注解

2.1 安装EditStarters插件

安装完后重启IDEA方可生效

2.2 在pom.xml中进行操作

直接增添lombok标签即可;

注:1、勿忘刷新maven

2、如果URL错误,可更换为以下URL(选择Gitee):

3、使用此方法生成的dependency如下:

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

 是没有版本标识的;

2.3 在java对象类中使用注解

注解使用方法同第一种方法,详见方法1的2和3步骤;

3. lombok工具使用结果查看

3.1 手动package

3.2 查看文件内容

文件内容如下:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package com.example.demo2.controller;

import java.util.Date;

public class MessageInfo {
    private String from;
    private String to;
    private String message;
    private Date CreateTime;

    public MessageInfo() {
    }

    public String toString() {
        return "MessageInfo(from=" + this.getFrom() + ", to=" + this.getTo() + ", message=" + this.message + ", CreateTime=" + this.CreateTime + ")";
    }

    public String getFrom() {
        return this.from;
    }

    public void setFrom(String from) {
        this.from = from;
    }

    public String getTo() {
        return this.to;
    }

    public void setTo(String to) {
        this.to = to;
    }
}

对比原始文件:

package com.example.demo2.controller;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.Date;

@ToString
public class MessageInfo {
    @Getter @Setter
    private String from;
    @Getter @Setter
    private String to;
    private String message;
    private Date CreateTime;
}

 可见lombok在编译阶段生成了部分代码;

注:此处虽然处于class目录下,但该文件并不是字节码文件,而是经过idea反编译的;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

信创好搭档,企业好选择| 亚信安慧AntDB诚邀您参与企业数智化升级云端研讨会

关于亚信安慧AntDB数据库 AntDB数据库始于2008年&#xff0c;在运营商的核心系统上&#xff0c;服务国内24个省市自治区的数亿用户&#xff0c;具备高性能、弹性扩展、高可靠等产品特性&#xff0c;峰值每秒可处理百万笔通信核心交易&#xff0c;保障系统持续稳定运行超十年&a…

宠物空气净化器热卖爆款,希喂、小米、352猫用空气净化器真实PK

相信大漫天多数养猫家庭都会有一个烦恼&#xff1a;猫咪们的猫实在是太多了&#xff0c;无法忍受家里面漫天飞舞的浮毛和难闻的猫猫便臭。作为养猫多年的过来人我尝试过很多种方法清理这些猫浮毛和异味&#xff0c;但都以失败告终。 直到后面看到一个宠物博主推荐的宠物空气净…

Studying-代码随想录训练营day14| 226.翻转二叉树、101.对称二叉树、104.二叉树的最大深度、111.二叉树的最小深度

第十四天&#xff0c;(ง •_•)ง&#x1f4aa;&#x1f4aa;&#xff0c;编程语言&#xff1a;C 目录 226.翻转二叉树 101.对称二叉树 100.相同的树 572.另一个树的子树 104.二叉树的最大深度 559.n叉树的最大深度 111.二叉树的最小深度 总结 226.翻转二叉树 文档讲…

笔记-python reduce 函数

reduce() 函数在 python 2 是内置函数&#xff0c; 从python 3 开始移到了 functools 模块。 官方文档是这样介绍的 reduce(...) reduce(function, sequence[, initial]) -> valueApply a function of two arguments cumulatively to the items of a sequence, from left …

HarmonyOS Next开发学习手册——进程模型线程模型

进程模型 系统的进程模型如下图所示&#xff1a; 应用中&#xff08;同一包名&#xff09;的所有PageAbility、ServiceAbility、DataAbility、FormAbility运行在同一个独立进程中&#xff0c;即图中绿色部分的“Main Process”。 WebView拥有独立的渲染进程&#xff0c;即图中…

Redis-实战篇-缓存雪崩

文章目录 1、缓存雪崩2、解决方案&#xff1a; 1、缓存雪崩 缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机&#xff0c;导致大量请求到达数据库&#xff0c;带来巨大压力。 2、解决方案&#xff1a; 给不同的key的TTL添加随机值利用Redis集群提高服务的可用性…

OpenAI API一键搬家,天工推出开发者迁移计划

6月25日&#xff0c;OpenAI宣布称将于今年7月9日开始封锁来自非支持国家和地区的API流量。此后&#xff0c;来自中国大陆、中国香港等地的开发者将无法使用OpenAI API提供服务。 为了助力开发者高效切换至国内大模型&#xff0c;天工开放平台&#xff08;https://model-platfo…

工业网关的功能与作用解析-天拓四方

在工业4.0和智能制造的时代背景下&#xff0c;工业网关作为连接现场设备与云端平台的桥梁&#xff0c;正发挥着日益重要的作用。它不仅为工业设备的远程监控和管理提供了可能&#xff0c;还为企业实现数字化转型和智能化升级提供了有力支持。本文将对工业网关的功能与作用进行解…

【SpringBoot Actuator】⭐️Actuator 依赖实现服务健康检查,线程信息收集

目录 &#x1f378;前言 &#x1f37b;一、Actuator 了解 &#x1f37a;二、使用 2.1 依赖引入 2.2 测试场景搭建 &#x1f379;三、测试 3.1 项目启动测试 3.2 服务健康检查 3.3 线程转储 3.4 内存使用&#xff0c;垃圾回收信息获取 &#x1f49e;️四、章末 &#x1…

程序猿大战Python——正则表达式——正则概述

正则表达式的概述 基本介绍 目标&#xff1a;了解什么是正则表达式&#xff1f; 正则表达式&#xff0c;也叫做规则表达式&#xff0c;通常会说成【正则】。 实际上&#xff0c;正则表达式就是指符合一定规则的字符串&#xff0c;同时它能用于检查一段文本数据是否与某种模式…

IND87520芯片介绍(二)

六、内部模拟调光 一个精确的10位DAC作为BUCK电流调节回路的参考发生器。与SPI通信时&#xff0c;DAC参考电压可由主机改变并调节电流在BUCK不断切换的同时&#xff0c;也会发生相应的变化。10位分辨率的DAC正在设计中满足电流变化平稳的要求。一个1.713mA电流步使光亮度连续变…

首次30米空间分辨率生成中国年度耕地栅格数据1986-2021

中国1986-2021年30米分辨率年度耕地数据集 数据介绍 精确、详细且及时的耕地范围信息对于粮食安全保障和环境可持续性至关重要。然而&#xff0c;由于农业景观的复杂性和足够训练样本的缺乏&#xff0c;在大范围下进行高时空分辨率的耕地动态监测仍然具有挑战性&#xff0c;尤其…

Matlab|【免费】含氢气氨气综合能源系统优化调度

目录 主要内容 部分代码 结果一览 下载链接 主要内容 该程序参考《_基于氨储能技术的电转氨耦合风–光–火综合能源系统双层优化调度》模型&#xff0c;对制氨工厂、风力发电、电制氢、燃气轮机、火电机组等主体进行建模分析&#xff0c;以火电机组启停成本、煤耗…

ubuntu中共享文件夹看不到了,解决方法

1、检查共享文件夹配置 2、创建 3、查看共享文件夹 4、另一问题&#xff0c;每次重启虚拟机后&#xff0c;共享文件夹又没了&#xff1f;

三大办公软件实用小技巧 沈阳办公软件白领必修班

Word 学好办公软件能大大的提升我们的工作效率。下面让我们一起学习一下Word办公软件时几个实用小技巧&#xff01; 01.快速插入当前日期或时间 在使用Word办公软件进行文档的编辑处理时&#xff0c;如果需要在文章的末尾插入系统的当前日期或时间。通常情况下&#xff0c;我…

洞察用户需求,Xinstall数据统计App让你的App运营如虎添翼

在互联网时代&#xff0c;App推广和运营面临着前所未有的挑战。流量红利逐渐衰退&#xff0c;用户获取成本不断攀升&#xff0c;如何确保在多变的互联网环境下&#xff0c;迅速搭建起能时刻满足用户需求的运营体系&#xff0c;成为众多企业急待解决的问题。今天&#xff0c;我们…

disableSplitter(false)和requestInputBufSize(0)一样吗?

编译omx文件时&#xff0c;在disableSplitter(false)前加了requestInputBufSize(0)导致报错 hardware/media/hardware/omx/vdec/omx_vdec3.cpp" vendor/realtek/common/ATV/hardware/media/hardware/omx/vdec/omx_vdec3.cpp:245:3: error: field requestInputBufSize wi…

ONLYOFFICE 8.1:引领桌面办公新潮流,功能升级全面提升

目录 一、ONLYOFFICE是什么&#xff1f; 二、功能完善的PDF编辑器 三、幻灯片版式升级 四、改进从右至左显示 五、新的本地化选项 六、多媒体功能增强 七、应用价值探讨 一、ONLYOFFICE是什么&#xff1f; ONLYOFFICE 是一款功能强大的办公套件&#xff0c;旨在提供全面…

如何从0构建一款类似pytest的工具

Pytest主要模块 Pytest 是一个强大且灵活的测试框架&#xff0c;它通过一系列步骤来发现和运行测试。其核心工作原理包括以下几个方面&#xff1a;测试发现&#xff1a;Pytest 会遍历指定目录下的所有文件&#xff0c;找到以 test_ 开头或 _test.py 结尾的文件&#xff0c;并且…

ozon测评自养号必备技巧:提升账号质量,降低测评成本

OZON测评自养号技巧 1.提高店铺权重 自主测评&#xff1a;通过自养号的方式&#xff0c;卖家可以自主控制测评的时间和数量&#xff0c;为自己的listing进行测评&#xff0c;提高店铺权重。 策略调整&#xff1a;根据市场情况和商品特点&#xff0c;灵活调整测评策略&#x…