Spring boot Lombok

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

Spring boot Lombok

上一节 Spring boot 参数校验

Spring boot 参数校验

源码

springboot学习指南


简介

lombok 并不是spring 或者springboot的 ;这里写这一章节主要是为了后续代码中会经常用到,所以在此简单介绍和使用下。

lombok 是为了简化代码开发, 避免编写相对不太注重的代码,例如get set等;让代码更简洁;
不过 lombok 也有很大的争议,不过使用上很简单,学习也不费劲。看自己是否需求选择使用。

idea 安装

直接在 设置中搜索 lombok安装重启即可
官网教程
在这里插入图片描述

eclipse 安装

官网教程

使用添加依赖

依赖
version 在springboot 2.x版本后可以不写,springboot 也管理了他的版本

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

常用注解

注解说明备注
@UtilityClass标注在类上,类会标记为final,生成一个私有构造器,该类中的所有方法,内部类,以及字段都会标记为静态工具类标注
@Slf4j标注在类上,可以使用log 进行日志输出,同理还有@Log4j ,@log4j2 等支持不同的日志框架日志打印
@Data标注了 @Data的类,会生成getter ,setter, 方法以及无参构造器,全部参数构造器, tostring方法,equal和 hashCode方法实体bean的常用方法
@Getter修饰类或者字段,生成getter方法getter
@Setter修饰类或者字段,生成setter方法setter
@Accessors修饰类或者字段,配置@setter或者@Data使用,并且可定制化方法的前缀,以及chain=true设置为链调用当链式调用set方法的时候比较适用
@EqualsAndHashCode修饰类,生成equals 和hashcode方法
@AllArgsConstructor修饰类,生成所有参构造器
@NoArgsConstructor修饰类,生成无参构造器
@RequiredArgsConstructor修饰类, 生成无参和所有参构造器
@ToString修饰类,生成tostring 方法
@NonNull检测参数是否为空,抛出NullPointerExceptionnull校验
@Cleanup修饰局部变量,清除资源,默认调用资源的close方法清除资源使用
@SneakyThrows修饰方法,抛出异常
@Synchronized修饰方法,方法会自动被synchronized修饰用处不大
@val修饰局部变量,变量会变成不可从新赋值,和final作用一致
@var修饰局部变量,例如 var a = 10 ;可以自动类型推断java11 已经实现

常用示例

@UtilityClass 和 @Slf4j 的使用

@UtitityClass 修饰类,表示这是一个工具类
@Slf4j 修饰类;表示可以使用Slf4j的日志输出,不用在代码中写 loggerFactory.getLogger… 的模板代码了

@UtilityClass
@Slf4j
public class StringUtil {

    public int length(String str) {
        log.info("str length ");
        return str.length();
    }
}

对比生成的class
对比下, 类被final 修饰,方法变为static; 并且生成私有构造器; @Slf4j 也生成了log

public final class StringUtil {
    private static final Logger log = LoggerFactory.getLogger(StringUtil.class);

    public static int length(String str) {
        log.info("str length ");
        return str.length();
    }

    private StringUtil() {
        throw new UnsupportedOperationException("This is a utility class and cannot be instantiated");
    }
}
@Accessors
@Accessors(chain = true) // 通过chain=true,生成链式set调用
@Setter
public class AccessorsTest {

    private String name;

    private Date createTime;

}

class
setter方法会返回this 当前对象;这样就可以 obj.setx().sety()…;链式setter

public class AccessorsTest {
    private String name;
    private Date createTime;

    public AccessorsTest() {
    }

    public AccessorsTest setName(final String name) {
        this.name = name;
        return this;
    }

    public AccessorsTest setCreateTime(final Date createTime) {
        this.createTime = createTime;
        return this;
    }
}
@NonNull

参数null 校验

@Slf4j
@Setter
public class NonNullTest {
 // 修饰字段,生成的setter方法会进行null校验
    @NonNull
    private String str;

    // 修饰构造器
    public NonNullTest(@NonNull String str) {

    }
   // 修饰普通方法
    public  String upperCase(@NonNull String str) {
        return str.toUpperCase();
    }
   // 修饰静态方法
    public static String upperCase2(@NonNull String str) {
        return str.toUpperCase();
    }
}

class
会进行字段或者参数是否为空的判断

public class NonNullTest {
    private static final Logger log = LoggerFactory.getLogger(NonNullTest.class);
    @NonNull
    private String str;

    public NonNullTest(@NonNull String str) {
        if (str == null) {
            throw new NullPointerException("str is marked non-null but is null");
        }
    }

    public String upperCase(@NonNull String str) {
        if (str == null) {
            throw new NullPointerException("str is marked non-null but is null");
        } else {
            return str.toUpperCase();
        }
    }

    public static String upperCase2(@NonNull String str) {
        if (str == null) {
            throw new NullPointerException("str is marked non-null but is null");
        } else {
            return str.toUpperCase();
        }
    }

    public void setStr(@NonNull final String str) {
        if (str == null) {
            throw new NullPointerException("str is marked non-null but is null");
        } else {
            this.str = str;
        }
    }
}
@Cleanup @SneakyThrows

@SneakyThrows 抛出异常,简化了我们在方法上throws exception;作用不是很大,还是手动试用感觉异常清晰明了
@Cleanup清除资源;例如 调用 io的close 方法释放资源

  @SneakyThrows
    public static void readFile(File file)  {
        @Cleanup FileInputStream fileInputStream = new FileInputStream(file);

    }

class

  public static void readFile(File file) {
        try {
            FileInputStream fileInputStream = new FileInputStream(file);
            if (Collections.singletonList(fileInputStream).get(0) != null) {
                fileInputStream.close();
            }

        } catch (Throwable var2) {
            throw var2;
        }
    }

不过jdk7 以后多使用 try-with-resource模式

 try (FileInputStream fileInputStream = new FileInputStream(file)) {

        }
@val @var
public void varTest() {
        var a = 1; // 声明为局部变量,可以自动类型推断
        var b = 2;
        System.out.println(a + b);
    }

    public void valTest() {
        val str = "aaa"; // 声明为常量
        //str = "Bbb"; // 再次赋值的时候,编译不过去
    }
getter,setter 使用问题;这个在开发中是很常见的一种错误,建议多看看

getter,setter 使用

@Getter
@Setter
public class GetSetTest {
 // 第一个字母小写,第二个字母大写,
    //我们不使用lombaok,按照java规范生成的get,set
    //( 如果属性名的第一个字母是小写且第二个字母大写,那么该属性名直接用作 
    // getter/setter 方法中 get/set 的后部分,就是说大小写不变。例如属性名为uId,方法是getuId,setuId
    private String uId;
    // 前两个或者多个字符是小写(驼峰规范); 生成的getset 为属性第一个字母
    //变大写,例如 name, getName, setName
    private String name;
    private Integer myAge;

    public String getuId() {
        return uId;
    }

    public void setuId(String uId) {
        this.uId = uId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getMyAge() {
        return myAge;
    }

    public void setMyAge(Integer myAge) {
        this.myAge = myAge;
    }
}

我们使用lombok生成

...
    public String getUId() {
        return this.uId;
    }
        public void setUId(final String uId) {
        this.uId = uId;
    }

如果第一个字母是小写,第二个字母是大写,lombok和 java生成的getset方法是不一样的;基于这一点spring 或者其他框架, 在给属性赋值的时候会出现问题

以上就是Lombok的简单运用和 一些问题;是一个辅助我们开发简洁的工具。


下一节 Spring boot jdbcTemplate

Spring boot jdbcTemplate

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

相关推荐

spring-boot(整合Lombok)

Lombok 可以显著减少样板代码,提高开发效率。通过使用 Lombok 注解,可以使代码更加简洁易读,并减少出错的可能性。

2302_79087378的博客 981

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

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

bugyinyin的博客 623

SpringBoot开发——Lombok详解

SpringBoot开发——Lombok详解

bjzhang75的博客 1826

SpringBoot系列-- SpringBoot中使用lombok简化开发

目录1. 项目环境2.添加依赖和安装插件3. 实体类常用注解总结3.1 @Setter、@Getter3.1.1 注解在属性上3.1.2 注解在类上3.1.3 注解对静态属性和final类型属性3.2 @NoArgsConstructor3.3 @AllArgsConstructor3.4 @RequiredArgsConstructor3.5 @ToString3.6 @EqualsAndHashCode3.7 @Data(常用)3.8 @Builder3.9 @Value3.10 @NonNull4.

Gang-bb的博客 3017

Spring Boot(三十六):Spring Boot 整合lombok

lombok概述 lombok简介 Lombok想要解决了的是在我们实体Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不会用到,但是某些时候仍然需要复写,以期方便使用的方法;在使用Lombok之后,将由其来自动帮你实现代码生成,注意,其是在运行过程中,帮你自动生成的。就是说,将极大减少你的代码总量。 lombok作用 消除模板代码 g...

u013938578的博客 652

2023年全国赛C题《 电容电感测量装置》设计报告

参考下面网站的方案参考LCR测试仪,基本工作原理为给DUT加上正弦激励信号,然后测得该DUT两端的电压和流过DUT的电流,即可通过计算得到DUT的性质和参数。对于一个理想电容,电流相位应该超前电容两端电压90°。然而实际的电容存在损耗,可以等效为一个理想电容Cp​和一个理想电阻Rp​的并联,因此电流超前电压的相位将小于90°,这个角度差即为损耗角。假设DUT两端电压V˙Vcosωt,流过DUT的电流为I˙Isinωt−φ。

moerjie的博客 4808

Lombok安装及Spring Boot集成Lombok

Lombok有什么用?在我们实体Bean中有大量的Getter/Setter方法以及toString, hashCode等可能不会用到,但是某些时候仍然需要复写;在使用Lombok之后,将由其来自动帮你实现代码生成。注意,其是在编译源码过程中,帮你自动生成的。就是说,将极大减少你的代码总量。

逆天子陆离的博客 5344

Moltemplate建模----水盒子data文件

1功能介绍 Moltemplate是LAMMPS官方支持的建模工具之一,适用于LAMMPS建模。该程序创建了一种简单的文件格式来存储分子定义和力场,即模板LT。LT文件包含与特定分子有关的所有文本(包括坐标,键拓扑,角度,力场参数,约束,组和修复)。 Moltemplate可以复制分子,对其进行自定义,然后用它作为构建更大、更复杂分子的基础。构建后,可以自定义...

元素魔方科研服务 2593

Spring Boot Lombok配置

Spring Boot Lombok的配置,配置IDEA自动生成属性的get和set方法,简化代码

github_35735591的博客 501

ZYNQ Linux 应用层 利用 AXI DMA 进行数据传输

ZYNQ Linux应用层 利用 AXI DMA 进行数据传输 软件版本: VIVADO2018.2 操作系统: Debian 9 硬件平台: ZYNQ-MZ7100FA 嵌入式操作系统:Debian(4.19.0-xilinx) AXI-DMA驱动:GitHub:bperez77/xilinx_axidma 一、搭建硬件环境 参见:《ZYNQ 修炼秘籍裸机篇 2019 版》第21章:CH21 利用 AXI DMA 进行批量数据环路测试 参考文章: ZYNQ跑系统 系列(四) AXI-DMA的linux下运

jin787730090的博客 1万+

ns3-gym入门(二):linear-mesh例子详解

学习ns3-gym中关于IEEE 802.11网状网络中控制随机接入的例子linear-mesh

zoe2222226666的博客 1841

Spring Boot 集成 lombok 让代码更简洁

话不多说,先上图:IDEA安装lombok插件 IntelliJ IDEA 定位到 File > Settings > Plugins 点击 Browse repositories… 搜索 Lombok Plugin 点击 Install plugin 重启 IDEA Spring Boot项目中使用lombok 添加lombok依赖 <!-- lombok代码简化 --> <de

尘与风铃 4604

(四)美赛画图篇:画图模板+画图工具

美赛画图篇:画图模板+画图工具(一)画图模板(二)画图工具 因为散点图、折线图等多与数据有关,且需相关软件生成,故此处多是通用模板。直接替换文字内容即可。 (一)画图模板 1、Visio圆圈图 适合于:指标体系(E题常用) 点击下载:1 C币 如果不想花费且时间充足,悄咪咪地说,在visio-模板搜索可以找到很多。(稍微会耗一点时间) 2、简单指标体系图PPT 适合于指标体系 点击下载:0 C币...

weixin_43689393的博客 1万+

Spring Boot 使用 Lombok 完整教程

在项目根目录下创建# 将生成的构造器设为protected# 禁止使用@EqualsAndHashCode的callSuper=true警告# 全局配置@ToString不包含字段名​​Lombok 的基本概念和优势​​​​如何在 Spring Boot 项目中集成 Lombok​​​​Lombok 核心注解的使用方法​​,包括 @Data、@Slf4j、@Builder 等​​Lombok 在 Spring Boot 各层开发中的实际应用​​​​Lombok 的高级特性和最佳实践​。

Rysxt_的博客 1536

肖特基二极管选型参数,结构原理,工艺与注意问题总结

肖特基二极管(Schottky Diode)是一种特殊的二极管,也被称为肖特基势垒二极管。它是利用金属与半导体接触形成的金属-半导体结原理制成的。与传统的PN结二极管相比,肖特基二极管具有更低的正向压降、更高的开关速度、更高的反向恢复时间以及更好的温度稳定性等特点。本文对肖特基二极管的工作原理,结构特点,工艺流程,选型参数及设计注意事项进行总结。

fydar的博客 812

2026基金本子新规必看!聚焦四大底层问题,利用AI辅助分别破解提升中标率

我拟申报的研究主题为【明确的研究主题或关键词组合】。选题方向也是评审专家关注的核心之一,申报前可以检索近五年领域前人中标项目,分析现有研究的空白与不足,并结合自身研究基础选择 “人无我有、人有我优” 的细分方向,如果是交叉学科选题,则要阐述不同学科的融合逻辑与创新点。“推动国家战略”、“带来行业发展”等宏观表述,有很多同仁都喜欢用这类话术开篇,但实际上宏大叙事无法替代具体的真实科学问题,明确不了研究要解决的核心痛点,更没有说明问题的现实针对性,评审看了往往抓不到研究的核心价值。

智能AI让学术科研更容易 294

Spring Boot Lombok 入门

Lombok 是一个 Java 工具,通过使用其定义的注解,自动生成常见的冗余代码,提升开发效率。举个例子,在 Java POJO 类上,添加 @Setter 和 @Getter 注解,自动生成 set、get 方法的代码。安装完成,需要重启 IDEA 来让该插件生效。生效完成后,我们可以在 IDEA 的设置中,找到 IDEA Lombok 功能。如下图所示:Lombok 设置。

无忧无虑的Coding~~~ 1090

js逆向-逆向部分技巧总结

js逆向-逆向部分技巧总结

Deng872347348的博客 2130

Spring Boot整合Lombok详解

Lombok是一个强大的Java库,它通过注解的方式简化了Java代码的编写,减少了模板代码的生成。在Spring Boot项目中整合Lombok非常简单,只需要添加依赖和安装插件即可。Lombok的注解如@Data@Getter和@Setter等,极大地提高了开发效率和代码的可读性。虽然Lombok有很多优点,但在团队中使用时,需要确保所有成员都了解和接受Lombok,以保持代码风格的一致性。版权声明:本博客内容为原创,转载请保留原文链接及作者信息。参考文章Spring Boot整合Lombok。

ning的博客 2180

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Spring Boot 集成 Lombok 全攻略

本文介绍了Lombok在SpringBoot开发中的应用指南。Lombok是一个通过注解自动生成Java代码的库,能显著减少样板代码量(30%-70%),提高代码可读性和维护性。文章详细讲解了环境搭建、核心注解(如@Getter/@Setter、@Data、@Builder等)的使用方法,并通过实体类、DTO、Service层等实战案例展示Lombok与SpringBoot的集成。同时提供了高级特性(自定义注解、与MapStruct集成)、常见问题解决方案和最佳实践建议,特别强调在团队开发中需统一规范。Lo

油墨香^-^的博客 1208

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Spring Boot实战工具3 - Lombok

Lombok可以通过简单的注解代替大量的模板代码,极大的提高了我们的编码效率。 3.1 开启Lombok支持 我们在IntelliJ IDEA下使用Lombok需要进行如下几步: IntelliJ IDEA 安装Lombok插件 进入插件安装界面 Windows:File->Settings->plugins macOS:IntelliJ IDEA->Preferences->plugins 搜索Lombok插件安装 安装完成后重启IntelliJ IDEA

汪云飞记录本 523

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Lombok 安装及 Spring Boot 集成 Lombok 万字详解

显卡问题的解决需要系统性和耐心。建议用户:记录每次故障的完整信息(时间、现象、解决步骤)建立驱动程序版本档案(记录每个版本的表现)定期监测温度和使用模式加入NVIDIA用户社区获取最新解决方案记住黄金法则:从最简单的解决方案开始,逐步深入。80%的问题可以通过清洁安装驱动解决,15%需要系统级调整,只有5%是真正的硬件故障。附:NVIDIA问题诊疗流程图text开始├─ 问题识别(驱动崩溃/分辨率异常/性能低下)├─ 基础检查(线缆连接、温度监控、电源)├─ 尝试驱动回滚(设备管理器)

油墨香^-^的博客 1122

Spring Boot集成Lombok:高效开发的实践指南

虽然Lombok在编译时能够自动生成代码,但为了让开发工具(如IntelliJ IDEA或Eclipse)能够正确识别Lombok注解,从而提升开发体验,安装Lombok插件是十分必要的。在实际开发中,构造函数的生成尤其重要,尤其是在使用框架(如Spring)时,无参构造函数通常是必需的,而全参构造函数则有助于在创建对象时快速初始化所有字段。通过这种方式,开发者可以根据实际需求灵活地选择生成的代码,避免不必要的代码冗余,同时保持代码的简洁性和清晰性。类将自动具备完整的属性访问方法,极大地简化了代码。

1812

用 IntelliJ + Spring Boot + Lombok 实现用户列表展示

在Data;@Data注:Lombok 的@Data会在编译时自动生成对应方法和构造器。

chen的博客 1002
上一篇: Spring boot 异常配置
下一篇: Spring boot jdbcTemplate
xiaoduup
博客等级 码龄9年 23粉丝 83原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值