`

Lombok介绍及使用方法(转)

    博客分类:
  • JAVA
 
阅读更多

原文链接

lombok简介

lombok是暑假来到公司实习的时候发现的一个非常好用的小工具,刚见到的时候就感觉非常惊艳,有一种相见恨晚的感觉,用了一段时间之后感觉的确挺不错,所以特此来推荐一下。

lombok的官方地址:https://projectlombok.org/

lombok的Github地址:https://github.com/rzwitserloot/lombok

那么lombok到底是个什么呢,lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具,简单来说,比如我们新建了一个类,然后在其中写了几个字段,然后通常情况下我们需要手动去建立getter和setter方法啊,构造函数啊之类的,lombok的作用就是为了省去我们手动创建这些代码的麻烦,它能够在我们编译源码的时候自动帮我们生成这些方法。

lombok能够达到的效果就是在源码中不需要写一些通用的方法,但是在编译生成的字节码文件中会帮我们生成这些方法,这就是lombok的神奇作用。

虽然有人可能会说IDE里面都自带自动生成这些方法的功能,但是使用lombok会使你的代码看起来更加简洁,写起来也更加方便。

lombok安装

lombok的安装跟一般引用jar包没有什么区别,可以到官网上下载最新的jar包,然后导入到项目里面就好啦。

Maven添加依赖

<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.10</version>
    </dependency>
</dependencies>

Intellij idea开发的话需要安装Lombok plugin,同时设置 Setting -> Compiler -> Annotation Processors -> Enable annotation processing勾选。

lombok使用

lombok使用过程中主要是靠注解起作用的,官网上的文档里面有所有的注解,这里不一一罗列,只说明其中几个比较常用的。

@NonNull: 可以帮助我们避免空指针。

使用lombok:

import lombok.NonNull;
    public class NonNullExample extends Something {
        private String name;  
        publicNonNullExample(@NonNull Person person) {
        super("Hello");
        this.name = person.getName();
    }
}

不使用lombok:

public class NonNullExample extends Something {
    private String name;  
    publicNonNullExample(@NonNull Person person) {
        super("Hello");
        if (person == null) {
            throw new NullPointerException("person");
        }
        this.name = person.getName();
    }
}

@Cleanup: 自动帮我们调用close()方法。

使用lombok:

import lombok.Cleanup;
import java.io.*;
public class CleanupExample {
    publicstaticvoidmain(String[] args) throws IOException {
        @Cleanup InputStream in = new FileInputStream(args[0]);
        @Cleanup OutputStream out = new FileOutputStream(args[1]);
        byte[] b = new byte[10000];
        while (true) {
            int r = in.read(b);
            if (r == -1) break;
            out.write(b, 0, r);
        }
    }
}

不使用lombok:

import java.io.*;
    public class CleanupExample {
        publicstaticvoidmain(String[] args) throws IOException {
            InputStream in = new FileInputStream(args[0]);
            try {
                OutputStream out = new FileOutputStream(args[1]);
                try {
                    byte[] b = new byte[10000];
                    while (true) {
                    int r = in.read(b);
                    if (r == -1) break;
                    out.write(b, 0, r);
                    }
                } finally {
                    if (out != null) {
                        out.close();
                    }
                }
            } finally {
                if (in != null) {
                in.close();
            }
        }
    }
}

@Getter / @Setter: 自动生成Getter/Setter方法

使用lombok:

    import lombok.AccessLevel;
    import lombok.Getter;
    import lombok.Setter;
    public class GetterSetterExample {
        @Getter @Setter private int age = 10;
        @Setter(AccessLevel.PROTECTED) private String name;
    }

不使用lombok:

public class GetterSetterExample {
    private int age = 10;
    private String name;
    publicintgetAge() {
        return age;
    }
    publicvoidsetAge(int age) {
        this.age = age;
    }
    protectedvoidsetName(String name) {
        this.name = name;
    }
}

@NoArgsConstructor: 自动生成无参数构造函数。

@AllArgsConstructor: 自动生成全参数构造函数。

@Data自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter方法,为非final字段添加@Setter,和@RequiredArgsConstructor!

还有其他一些比如自动生成日志对象等等之类的注解可以到官方网站去了解,就不一一列举了。

官方文档https://projectlombok.org/features/index.html

 

分享到:
评论

相关推荐

    spring boot3+jpa+lombok+mapstruct实现的restful api例子

    RESTful API设计原则包括使用HTTP方法(GET, POST, PUT, DELETE)表示操作,通过URI(Uniform Resource Identifier)定位资源,并使用JSON或XML作为数据交换格式。本项目中,Spring Boot的Controller层将处理HTTP...

    Spring Boot 2.0 配置属性自定义转换的方法

    Spring Boot 2.0 配置属性自定义转换的方法 在 Spring Boot 2.0 中,配置属性自定义转换是一个非常重要的功能,能够满足用户的个性化需求。在本文中,我们将介绍如何实现配置属性自定义转换,包括使用 ...

    SpringBoot+MyBatis简单数据访问应用的实例代码

    本文主要介绍了使用 SpringBoot 和 MyBatis 构建简单数据访问应用的实例代码,涵盖了从 Maven 依赖项到数据库连接的整个过程。 一、 Maven 依赖项 在 Pom 文件中,我们可以看到以下依赖项: * `spring-boot-...

    redis的相关知识讲解,及相关配置

    通过以上介绍,我们了解了 Redis 的基本概念及其 Java 客户端 Jedis 的使用方法。Jedis 提供了一个便捷的方式来操作 Redis 数据库,而 Fastjson 则使得对象与 JSON 之间的转换变得简单高效。结合这些工具和技术,...

    Intellij idea高效使用教程_Intellijidea高效使用教程_

    - 使用插件:如Lombok插件简化getter/setter,DB Navigator插件管理数据库。 10. **代码分析与质量检查** - 代码检查:"Code" -&gt; "Inspect Code",找出潜在问题。 - 代码风格检查:通过"Code Style"设置,确保...

    IDEA插件1

    2. Lombok库的介绍:Lombok是一个Java库,通过注解的方式,可以在编译时自动为类的属性添加构造器、getter/setter、equals、hashCode和toString方法。这样,开发者在源代码中无需手动编写这些重复性代码,同时在编译...

    关于Java跨域Json字符转类对象的方法示例

    EventVO类使用了Lombok库的@Data注解,它会自动生成getter和setter方法,以及equals、hashCode和toString方法。 一旦实体类创建完成,就可以使用相应的JSON解析库提供的方法将JSON字符串转换为实体类对象。例如,...

    java常用必坑指南大法

    为了避免这些问题,本文将详细介绍Java编程中的一些常见问题和解决方法。 一、避免空指针 在Java编程中,空指针是一个非常常见的问题,主要是由于对象未初始化或对象为空引发的。避免空指针的方法有多种,例如: ...

    Java Magazine MayJune 2017.pdf

    - **Lombok简介**:Lombok是一个代码生成库,用于减少Java开发中的样板代码(boilerplate code),这包括自动生成getter、setter、equals、hashCode、toString等方法,从而提高开发效率。 - **项目Lombok**:通过...

    BeanUtils工具类

    下面将详细介绍BeanUtils工具类的核心功能和使用方法。 1. **属性设置与获取** BeanUtils工具类通过反射机制实现了对JavaBean的属性设置。例如,我们有一个User类,包含name和age属性,我们可以用以下方式设置属性...

    IDEA表生成实体类注解,配使用步骤说明

    还可以选择是否生成ToString方法,以及是否使用Lombok库来简化代码。 7. **生成和查看实体类** 确认设置无误后,点击"Finish",IDEA将在指定的包下生成对应的实体类文件。每个实体类对应数据库中的一个表,表的...

    springboot快速开发架构.rar

    6. lombok: 实体对象方法工具 7. maven: 管理jar包 #### 前端技术说明 基于 layui2.5.6。 遵循原生 HTML/CSS/JS 的书写与组织形式,上手容易,拿来即用。 最低兼容到IE8浏览器。 #### 数据库处理 1. mysql8.0 2...

    java list 过滤

    至于“工具”标签,可能暗示文章介绍了某些实用的库或工具,如Guava或Lombok,它们提供了额外的过滤功能或简化了代码。例如,Guava的`Predicates`类包含了许多预定义的谓词,而Lombok的`@NonNull`注解可以帮助自动...

    IDEA中实体类实现了序列化接口

    本文将详细介绍这一问题的原因以及如何解决。 #### 二、序列化简介 序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在Java中,如果一个类需要支持序列化,那么这个类需要实现`java.io.Serializable`...

    Dubbo3.0入门教程与新特性介绍.pdf

    UserService 使用 Lombok 注解简化对象创建。 在 consumer 项目中,同样配置 pom 文件,引入 Spring Boot Web 依赖。创建一个 UserController 类,通过 @Resource 注解注入 UserService 实例,实现对用户提供服务的...

    java常用工具类

    下面将详细介绍一些重要的Java工具类和它们的功能。 首先,我们关注Java标准库中的`java.util`包,它包含了大量实用的工具类: 1. **ArrayList** 和 **LinkedList**:这两种数据结构分别实现了List接口,提供了...

    mybatis-plus及分布式项目简介1

    - **编辑POJO对象**:使用Lombok注解如`@Data`、`@Accessors`、`@NoArgsConstructor`和`@AllArgsConstructor`,以及`@TableName`来完成对象与数据表的映射。 - **编辑Mapper接口**:Mybatis-Plus提供了通用的Mapper...

    mybatis.docx

    - **Lombok**:简化 Java 对象的创建,自动添加 getter、setter 等方法。 - **JUnit**:单元测试库,用于测试代码。 - **Log4j**:日志记录库,便于调试和监控。 **2.1 依赖导入** 在 pom.xml 文件中添加上述依赖...

    SpringBoot使用Ajax实现登录

    本文将详细介绍如何在Spring Boot环境中配置和使用Ajax进行登录处理。 首先,我们看到`pom.xml`文件中的依赖配置,这是构建项目的基础。Spring Boot的核心依赖`spring-boot-starter-web`提供了Web开发所需的基本...

Global site tag (gtag.js) - Google Analytics