SpringBoot [ 4.使用Lombok]

Spring Boot 之 Lombok 使用详解 *@Data:**这是一个组合注解,相当于@Getter,@Setter,@ToString,@EqualsAndHashCode,@RequiredArgsConstructor的组合。它会生成所有字段的 getter 和 setter 方法,toString()、equals() 和 hashCode() 方法,以及一个包含 final 字段和非空字段的构造函数。**@Slf4j:**生成一个名为 log 的日志对象,可以直接使用 log.info() 等方法输出日志。可以指定参与比较的字段。 阅读详情

SpringBoot [ 4.使用Lombok] - 目录


1.概述

我前面得几篇博客频繁得使用到了Lombok,这里我就讲一下,我在公司得工作过程当中,我最常用得一些Lombok得注解得用法。

Lombok它是一款使用注解,用来精简代码,提高编程效率得Java工具,
至于它是怎么精简得,以及它得一些特性,下面得内容我会介绍。

2.使用

2.1.编译器集成Lombok插件

Java编译器,idea和eclipse都可以集成Lombok插件,本人使用得是idea,这里就简单介绍一下idea得集成。

打开idea得setting配置,在Plugins中搜索Lombok,点击安装,然后重启编译器即可使用。

在这里插入图片描述

2.2.pom引入依赖

spring-boot-dependencies当中已经有了Lombok得版本管理,这里我们直接引入就好了。

<!-- Lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <scope>provided</scope>
</dependency>


<!-- 依赖统一管理 -->
<dependencyManagement>
    <dependencies>
        <!-- Spring Boot -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring.boot.version}</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
    </dependencies>
</dependencyManagement>

3.常用注解

在工作当中,我最常用得就是在,entity,dto,vo这些类上频繁得使用到Lombok得注解; 这些注解得作用其实就是,使用之后不需要编写对应得Java代码,比如说我使用@Getter注解之后,就不需要编写get方法;

不需要编写代码,那项目怎么运行呢,是这样的,在项目进行打包编译得时候它会在.class文件中自动生成对应得代码,只不过在我们项目源码中没有对应得编码。

3.1.类注解

3.1.1.@Getter

在类打上@Getter注解,不需要生成Get方法得代码,其他地方就可直接使用Get方法;

package com.mantou.boot.dto;

import lombok.*;

/**
 * Lombok测试类
 * @author mantou
 */
@Getter
public class LombokDemoDTO {

    /**
     * 标题
     */
    private String title;

    /**
     * 内容
     */
    private String content;
}

在这里插入图片描述

/**
 * Lombok测试接口
 * @author mantou
 */
@Slf4j
@RestController
@RequestMapping("/lombok")
public class LombokDemoController {

    /**
     * 获取Lombok实例
     * @return
     */
    @GetMapping(value = "/getLombokInstance")
    public Result getLombokInstance() {

        LombokDemoDTO lombokDemoDTO = new LombokDemoDTO();
        String content = lombokDemoDTO.getContent();

        return Result.success();
    }
}

3.1.2.@Setter

在类打上@Setter注解,不需要生成Set方法得代码,其他地方就可直接使用Set方法;

package com.mantou.boot.dto;

import lombok.*;

/**
 * Lombok测试类
 * @author mantou
 */
@Getter
@Setter
public class LombokDemoDTO {

    /**
     * 标题
     */
    private String title;

    /**
     * 内容
     */
    private String content;
}

在这里插入图片描述

/**
 * Lombok测试接口
 * @author mantou
 */
@Slf4j
@RestController
@RequestMapping("/lombok")
public class LombokDemoController {

    /**
     * 获取Lombok实例
     * @return
     */
    @GetMapping(value = "/getLombokInstance")
    public Result getLombokInstance() {

        LombokDemoDTO lombokDemoDTO = new LombokDemoDTO();
        lombokDemoDTO.setContent("内容");
        String content = lombokDemoDTO.getContent();

        return Result.success();
    }
}

3.1.3.@ToString

在类打上@ToString注解,会重写类得toString方法

package com.mantou.boot.dto;

import lombok.*;

/**
 * Lombok测试类
 * @author mantou
 */
@Getter
@Setter
@ToString
public class LombokDemoDTO {

    /**
     * 标题
     */
    private String title;

    /**
     * 内容
     */
    private String content;
}

3.1.5.@EqualsAndHashCode

在类打上@EqualsAndHashCode注解,会重写类得equals方法和hashCode方法

import lombok.*;

/**
 * Lombok测试类
 * @author mantou
 */
@Getter
@Setter
@ToString
@EqualsAndHashCode
public class LombokDemoDTO {

    /**
     * 标题
     */
    private String title;

    /**
     * 内容
     */
    private String content;
}

到这里为止,我们可以看一下项目编译过后的.class文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
很明显,它生成了get方法,set方法,重写了toString方法,hashCode方法和equals方法.

3.1.4.@Data

这个@Data是我最常用的注解之一,因为具备@Setter,@Getter,@ToString,@EqualsAndHashCode的功能。

这个时候,我们把上面的那四个注解去掉,打上@Data注解

import lombok.*;

/**
 * Lombok测试类
 * @author mantou
 */
@Data
public class LombokDemoDTO {

    /**
     * 标题
     */
    private String title;

    /**
     * 内容
     */
    private String content;
}

打上注解以后,把.class文件clean一下,重写编译,再看.class文件

在这里插入图片描述
在这里插入图片描述
我们可以发现,生成的编码和上面那四个注解生成的编码是一样的.

3.1.5.@RequiredArgsConstructor

这个注解我比较喜欢用,类打上这个注解后,会生成一个静态方法,该方法会返回一个new的对象,这个方法名是由我们自定义的.

package com.mantou.boot.dto;

import lombok.*;

/**
 * Lombok测试类
 * @author mantou
 */
@Data
@RequiredArgsConstructor(staticName = "newLombokDemoDTO")
public class LombokDemoDTO {

    /**
     * 标题
     */
    private String title;

    /**
     * 内容
     */
    private String content;
}

在这里插入图片描述

/**
 * Lombok测试接口
 * @author mantou
 */
@Slf4j
@RestController
@RequestMapping("/lombok")
public class LombokDemoController {

    /**
     * 获取Lombok实例
     * @return
     */
    @GetMapping(value = "/getLombokInstance")
    public Result getLombokInstance() {

        LombokDemoDTO lombokDemoDTO = LombokDemoDTO.newLombokDemoDTO();
        lombokDemoDTO.setContent("内容");

        String content = lombokDemoDTO.getContent();

        return Result.success(lombokDemoDTO.toString());
    }
}

这个时候我们再来看一下.class文件,生成了一个静态的方法,返回一个new的对象
在这里插入图片描述

3.1.6.@AllArgsConstructor

在类打上@AllArgsConstructor注解,会生成一个有所有参数的构造方法

/**
 * Lombok测试类
 * @author mantou
 */
@Data
@AllArgsConstructor
@RequiredArgsConstructor(staticName = "newLombokDemoDTO")
public class LombokDemoDTO {

    /**
     * 标题
     */
    private String title;

    /**
     * 内容
     */
    private String content;
}

看下.class文件

在这里插入图片描述

3.1.7.@Accessors

这个注解其实就是使对象支持链式的set方法

package com.mantou.boot.dto;

import lombok.*;
import lombok.experimental.Accessors;

/**
 * Lombok测试类
 * @author mantou
 */
@Data
@AllArgsConstructor
@Accessors(chain = true)
@RequiredArgsConstructor(staticName = "newLombokDemoDTO")
public class LombokDemoDTO {

    /**
     * 标题
     */
    private String title;

    /**
     * 内容
     */
    private String content;
}

使用

/**
 * Lombok测试接口
 * @author mantou
 */
@Slf4j
@RestController
@RequestMapping("/lombok")
public class LombokDemoController {

    /**
     * 获取Lombok实例
     * @return
     */
    @GetMapping(value = "/getLombokInstance")
    public Result getLombokInstance() {

        LombokDemoDTO lombokDemoDTO = LombokDemoDTO.newLombokDemoDTO()
                .setContent("内容").setTitle("标题");

        String content = lombokDemoDTO.getContent();

        return Result.success(lombokDemoDTO.toString());
    }
}

我们看一下.class文件,其实就是在set方法加了一个返回值

在这里插入图片描述

3.1.8.@Slf4j

这个是一个提供日志对象(log)的注解,我项目中日志使用的是slf4j + logback,我这里就使用@Slf4j注解,如果日志使用的是log4j,那就使用@Log4j注解;

/**
 * Lombok测试接口
 * @author mantou
 */
@Slf4j
@RestController
@RequestMapping("/lombok")
public class LombokDemoController {

    /**
     * 获取Lombok实例
     * @return
     */
    @GetMapping(value = "/getLombokInstance")
    public Result getLombokInstance() {

        LombokDemoDTO lombokDemoDTO = LombokDemoDTO.newLombokDemoDTO()
                .setContent("内容").setTitle("标题");

        String content = lombokDemoDTO.getContent();

        log.info("content : {}", content);

        return Result.success(lombokDemoDTO.toString());
    }

再看一下.class文件,生成了一个日志对象
在这里插入图片描述

我在实际的开发当中,最常用的Lombok注解就这些了.

springboot依赖lombok插件、lombok常用注解 springboot依赖lombok插件、lombok常用注解讲解 阅读详情

相关推荐

SpringBoot项目中Lombok @Slf4j失效?3种依赖冲突排查姿势(附logback配置)

本文深入探讨了SpringBoot项目中Lombok @Slf4j注解失效的常见问题,提供了三种依赖冲突排查方法,包括Maven依赖树分析、IDE可视化工具辅助和运行时类加载诊断。同时,文章还附带了logback配置的最佳实践,帮助开发者快速解决日志记录问题,提升开发效率。

a3b4c5的博客 779

注解的使用(一):APT,编译时注解处理器

关于编译时注解(APT)由浅入深有三部分,分别是: 自定义注解处理器 : 例如 ButterKnife、Room 根据注解生成新的类; 利用 JcTree 在编译时修改代码:像 Lombok 自动往类中新增 getter/setter 方法、往方法中插入代码行等; 自定义 Gradle 插件在编译时修改代码 :例如一些代码插桩框架,以及我司一些应用使用了这种方式。 这篇文章以Demo的形式,介绍如何从零开始创建一个自定义的注解处理器,并生成一个新的类。这个类中有一个静态方法,方法返回添加了自定义注解的所

bugyinyin的博客 623

SpringBoot开发——Lombok详解

SpringBoot开发——Lombok详解

bjzhang75的博客 1826

Spring Boot的Lombok详解

Lombok是一个Java库,旨在通过自动生成样板代码来减少开发人员需要编写的冗余代码,从而提高代码的可读性和简洁性。它通过注解的方式,让开发人员能够在编写代码时自动产生一些常见的方法和字段,如getter、setter、构造函数、equalshashCode等,从而简化了Java类的创建和维护。Lombok使得你可以在代码中专注于核心逻辑,而不必担心冗长的样板代码。Lombok大大简化了Java开发过程中的样板代码编写,使开发人员能够专注于核心逻辑,提高代码的可维护性和可读性。

rm -rf/坏习惯 1919

主流算力卡性能对比分析

超大规模AI训练/HPC:优先选择NVIDIA H100或AMD MI300X,需关注显存带宽和多卡互联能力。企业级AI训练:NVIDIA A100性价比更高,生态成熟。国内自主可控需求:华为昇腾910B是首选,支持液冷和低功耗设计。本地AI推理/游戏:NVIDIA RTX 4090或RTX 5090性价比突出,但需注意显存容量限制。边缘计算/低功耗场景:华为昇腾310或清微智能TX536(能效比6.3TOPS/W@INT8)更合适。

m0_69867914的博客 7795

Veeam Backup Replication Console 13 备份 PVE

本文介绍了如何通过Veeam Backup & Replication控制台配置与Proxmox VE(PVE)服务器的连接,包括主机地址、用户名密码和SSH信任设置。随后详细说明了部署备份Worker虚拟机的步骤,涵盖网络配置和VM创建。接着指导用户创建PVE虚拟机备份任务,包括命名、选择备份对象、存储位置、备份类型设置,以及配置备份计划任务。最后描述了备份测试执行过程,从启动备份到完成状态通知的完整流程。整个操作涉及服务器连接、Worker部署、备份配置和任务执行四个主要环节。

极致,细节 1601

SpringBoot3.4.5下Lombok的@Data注解不生效,解决方案

程序员Feri一名12年+的程序员,做过开发带过团队创过业,擅长Java、嵌入式、鸿蒙、人工智能等,专注于程序员成长那点儿事,希望在成长的路上有你相伴!君志所向,一往无前!

程序员Feri 751

ADC学习(3)——采样电路

第三章 采样电路

夏风喃喃的博客 3万+

SpringBoot下lombok不起作用的相关问题解决及@Slf4j和@Data使用

SpringBoot下lombok的@Slf4j和@Data使用及相关问题 第一步 pom.xml中添加依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.8</version>

sea 5647

科研智能体平台搭建与实战:大模型如何驱动科研自动化

大模型技术的快速发展,正推动AI智能体从单纯对话工具向主动执行任务的科研伙伴演进。智能体的核心原理在于整合模型调用、工具使用、知识库检索与工作流编排,使其能够自主拆解目标、执行操作并迭代优化。在科研场景中,这一技术价值尤为突出:文献初筛、实验数据清洗、代码调试、结果汇总等高频重复劳动均可实现自动化,大幅释放研究者精力。从基础组件配置到多智能体协同,从平台选型到提示词调优,实际落地需要关注模型匹配、工具稳定性、记忆管理与人机校验机制。本文基于真实工程经验,系统梳理科研智能体平台的搭建路径、应用案例与高频问题排

weixin_32597009的博客 282

YOLOv11改进 | 注意力篇 | YOLOv11引入24年ECCV的自调制特征聚合注意力模块(SMFA),并构建C2PSA_SMFA

1.SMFA介绍1.1 摘要:基于Transformer的图像复原方法由于Transformer的自注意(self-attention,SA)特性能够更好地挖掘非局部信息,从而获得更好的高分辨率图像重建效果,因此具有重要的应用价值。然而,关键点积SA需要大量的计算资源,这限制了其在低功耗器件中的应用。此外,模拟退火机制的低通特性限制了其捕获局部细节的能力,从而导致平滑的重建结果。

tsg6698的博客 952

BUG: 解决新版本SpringBoot3.4.3在创建项目时勾选lombok但无法使用的问题

当使用创建SpringBoot3.4.3新项目时,即使正确勾选Lombok依赖,编写代码时可以正常使用,但编译时报错。

2201_75490194的博客 2208

【Claude Code】Extra inputs are not permitted 报错:代理网关剥离 Beta 标头的修复

通过代理或 LLM 网关连接 Anthropic API 时,Claude Code 报 "Extra inputs are not permitted"?根因是中间件删除了 anthropic-beta 请求标头,导致 Beta 字段被 API 拒绝。本文详解标头转发配置和 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS 回退方案。

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 123

【第4章】SpringBoot整合Lombok

Project Lombok是一个java库,它可以自动插入编辑器和构建工具,为您的java程序锦上添花。再也不要写另一个getter或equals方法了,只要有一个注释,你的类就有一个功能齐全的生成器,自动记录变量等等。回到顶部官方网站更多内容请参考【第25章】spring-整合Lombok。

zjg 825

MATLAB点云处理(八):为点云添加高斯噪声

本文对如何借助MATLAB,为点云添加高斯噪声做出了说明,并给出实现代码。

孙悟空 2844

一文掌握 MongoDB 详细安装与配置(Windows / Linux / macOS 全平台)

本文详细介绍了MongoDB社区版7.0+在Windows、Linux和macOS三大操作系统上的完整安装、配置与安全加固流程。主要内容包括:各平台推荐安装方式(Windows使用MSI安装包、Linux通过官方仓库、macOS通过Homebrew)、基本配置参数说明、服务启动方法以及关键安全措施(如创建管理员用户和启用身份验证)。文章还提供了系统最低要求、下载地址、数据目录设置建议以及生产环境使用注意事项,适合开发、测试及生产环境部署参考。

数据知道的博客 6708

非Springboot项目中使用lombok中的@Slf4j 中的log打印日志

非Springboot项目中使用lombok中的@Slf4j 中的log打印日志

qq_43528713的博客 2039

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Springboot的lombok @Slf4j日志注解

Springboot的日志

weixin_51725434的博客 955

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

SpringBoot项目中Lombok @Slf4j失效?3种依赖冲突排查与解决方法

本文深入探讨了SpringBoot项目中Lombok @Slf4j注解失效的常见问题,提供了三种依赖冲突排查与解决方法,包括日志框架冲突、SLF4J API版本不匹配和Jakarta EE命名空间问题。通过详细的步骤和代码示例,帮助开发者快速定位并解决log对象无法调用info()方法的问题,提升开发效率。

rl6adventurer的博客 973

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Idea中创建springboot项目,添加lombok依赖,@Slf4j注解报错“Cannot resolve symbol ‘log‘”

在pom.xml中添加Lombok依赖(1.18.24)后,使用@Slf4j注解简化日志记录。在TestController中通过@Resource注入服务,实现流程部署功能。调用repositoryService部署BPMN流程,打印流程信息并记录日志。配置正确后可正常运行,解决日志与依赖问题。

君临天下tjm的博客 1004

Springboot3.5.4版本--lombok失效问题

记录SpringBoot新版本的lombok失效问题

m0_52710583的博客 428

SpringBoot SpringBoot 基础篇 4 基于 SpringBoot 的SSMP 整合案例 4.3 实体类快速开发【lombok】

SpringBoot SpringBoot 基础篇 4 基于 SpringBoot 的SSMP 整合案例 4.3 实体类快速开发【lombok】

代码改变世界 569

SpringBoot3.4以上版本lombok配置不起作用,以及mybatis-plus报错Invalid bean definition with name ‘sysUserMapper‘ ....

我在网上查了很长时间的资料都没用,我当时没想到springboot版本的问题,直到今天我在使用mybatis-plus的时候报错,我在网上看到的解决方案是说因为版本更新,有些不兼容,要把pom文件中的mybatis-plus依赖做一下修改。真的不要随便换springboot版本,我写的时候没注意,springboot使用的是最新版的springboot3.4.1,引入lombok之后启动项目报错如下。罪魁祸首就是这个,我尝试过删除插件重新启动结果还是报同样的错误,直到加上lombok的版本号才能正确运行。

weixin_62727719的博客 773

Spring boot 日志注解@Slf4j(基于lombok)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34150503的博客 2982

SpringBoot2.0 Lombok的使用

Lombok的使用 Lombok的介绍 lombok是一个插件工具类包;提供了一些注解@Data、@Getter等这些注解去简化实体类中的构造方法、get/set等方法的编写。 一堆注解, 可以简化pojo代码 在Bean上使用: @Data :自动提供getter和setter、hashCode、equals、toString等方法 @Getter:自动提供getter方法 @Setter:自动提供setter方法 @Slf4j:自动在bean中提供log变量,其实用的是slf4j的日志功能 IDEA

weixin_44014201的博客 187

springboot @Slf4j日志管理(lombok插件)

文章目录文章参考springboot配置日志案例一(在每个Controller中获取日志对象)案例二如何解决编译器找不到log变量的问题? 文章参考 Spring Boot 日志配置方法 @Slf4j注解实现日志输出 eclipse环境下:lombok安装及使用 springboot配置日志 默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台。 spr...

黄彪博客 3631
上一篇: SpringBoot [ 3.集成 Mybatis-Plus]
下一篇: SpringBoot [ 5.集成Swagger-Bootstrap-UI]
我是馒头啊
博客等级 码龄10年 6粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值