首页 > 编程语言 >3-【JavaWeb】Lombok配置及使用方法介绍

3-【JavaWeb】Lombok配置及使用方法介绍

时间:2024-09-12 12:50:14浏览次数:11  
标签:JavaWeb 配置 private 生成 public import lombok Lombok

Lombok 入门教程

1. 什么是 Lombok?

Lombok 是一个帮助简化 Java 类中样板代码的 Java 库。比如,你经常会发现自己重复编写 gettersetter 方法、构造函数、toString()equals()hashCode() 方法等。Lombok 通过注解来自动生成这些代码,简化开发工作。

2. Lombok 安装步骤

2.1 使用 Maven 项目

如果你在使用 Maven,需要在 pom.xml 中添加 Lombok 依赖。步骤如下:

  1. 打开你的项目的 pom.xml 文件。
  2. <dependencies> 部分中加入 Lombok 依赖:
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.24</version> <!-- Lombok 最新版本号可在官网查找 -->
    <scope>provided</scope>
</dependency>
  1. 保存文件后,Maven 会自动下载 Lombok 依赖。

2.2 使用 Gradle 项目

如果你使用 Gradle,则需要修改 build.gradle 文件:

  1. 打开你的项目的 build.gradle 文件。
  2. dependencies 部分添加 Lombok 依赖:
dependencies {
    compileOnly 'org.projectlombok:lombok:1.18.24'
    annotationProcessor 'org.projectlombok:lombok:1.18.24'
}
  1. 保存后,Gradle 会自动下载 Lombok 库。

2.3 配置 IDE

为了在开发工具中正确识别 Lombok 注解,你需要安装插件:

  • IntelliJ IDEA:打开 File > Settings > Plugins,然后搜索并安装 Lombok Plugin。安装后,启用 Enable annotation processing
  • Eclipse:通过 Eclipse Marketplace 搜索并安装 Lombok 插件

3. Lombok 的常用注解

Lombok 主要通过注解来生成代码。以下是一些常见的 Lombok 注解及其用途。

3.1 @Getter@Setter

  • @Getter:自动生成 getter 方法。
  • @Setter:自动生成 setter 方法。
示例:
import lombok.Getter;
import lombok.Setter;

public class User {
    @Getter @Setter
    private String name;
    
    @Getter @Setter
    private int age;
}

作用:上面的代码会自动生成 getName()setName()getAge()setAge() 方法。无需手动编写 getter 和 setter 方法。

3.2 @ToString

  • @ToString:自动生成 toString() 方法,返回对象的字符串表示。
示例:
import lombok.ToString;

@ToString
public class User {
    private String name;
    private int age;
}

作用:调用 System.out.println(user) 会打印 User(name=Alice, age=30) 这种格式。

3.3 @NoArgsConstructor@AllArgsConstructor

  • @NoArgsConstructor:生成无参构造函数。
  • @AllArgsConstructor:生成包含所有字段的构造函数。
示例:
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;

@NoArgsConstructor
@AllArgsConstructor
public class User {
    private int id;
    private String name;
}

作用

  • @NoArgsConstructor 会生成 User() 无参构造函数。
  • @AllArgsConstructor 会生成 User(int id, String name) 构造函数。

3.4 @Data

  • @Data 是 Lombok 的综合注解,包含以下功能:
    • @Getter@Setter
    • @ToString
    • @EqualsAndHashCode
    • @RequiredArgsConstructor
示例:
import lombok.Data;

@Data
public class User {
    private int id;
    private String name;
}

作用@Data 会自动为类生成所有字段的 getter、setter、toString()equals()hashCode() 方法,以及必要的构造函数。

3.5 @Builder

  • @Builder:为类生成 builder 模式,用于流式创建对象。
示例:
import lombok.Builder;

@Builder
public class User {
    private String name;
    private int age;
}

作用:你可以使用 builder 模式来创建对象:

User user = User.builder()
                .name("Alice")
                .age(30)
                .build();

3.6 @Value

  • @Value:用于创建不可变类。所有字段默认使用 final,不生成 setter 方法。
示例:
import lombok.Value;

@Value
public class User {
    private String name;
    private int age;
}

作用@Value 会生成不可变类,确保字段值不可更改。

3.7 @Slf4j

  • @Slf4j:生成日志对象 log,用于记录日志。
示例:
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class UserService {
    public void createUser() {
        log.info("Creating a new user...");
    }
}

作用@Slf4j 会生成 log 对象,可以直接使用 log.info() 来记录日志。

4. Lombok 注解的实际应用

4.1 使用 @Data 简化实体类

在传统的 Java 开发中,一个简单的实体类可能会包含很多样板代码,如 getter、setter、toString() 等。使用 Lombok 的 @Data 注解,可以大大简化这些类的代码。

示例:
import lombok.Data;

@Data
public class Product {
    private int id;
    private String name;
    private double price;
}

效果:Lombok 会自动生成 Product 类的所有 gettersettertoString()equals()hashCode() 方法。

4.2 使用 @Builder 模式创建对象

假设你想创建一个包含多个字段的对象,使用传统的构造方法可能不够直观。Lombok 的 @Builder 注解可以帮助你更清晰地构建对象。

示例:
import lombok.Builder;

@Builder
public class Order {
    private String productName;
    private int quantity;
    private double price;
}

效果:使用 builder 模式创建对象:

Order order = Order.builder()
                   .productName("Laptop")
                   .quantity(2)
                   .price(1500.00)
                   .build();

4.3 使用 @Slf4j 记录日志

开发中,日志记录是非常重要的,Lombok 提供了 @Slf4j 注解,自动生成一个 log 对象来方便记录日志。

示例:
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class PaymentService {
    public void processPayment() {
        log.info("Payment processed successfully.");
    }
}

效果:你可以使用 log 对象的 info()debug()error() 方法记录日志。

5. 总结

Lombok 通过简洁的注解,帮助 Java 开发者减少样板代码,使代码更简洁易读。

  • @Getter / @Setter:生成 getter 和 setter 方法。
  • @ToString:生成 toString() 方法。
  • @NoArgsConstructor / @AllArgsConstructor:生成构造函数。
  • @Data:自动生成 getter、setter、toString()equals()hashCode() 等方法。
  • @Builder:生成 builder 模式。
  • @Value:创建不可变类。
  • @Slf4j:用于生成日志对象 log

标签:JavaWeb,配置,private,生成,public,import,lombok,Lombok
From: https://blog.csdn.net/weixin_44329069/article/details/142139270

相关文章

  • JAVA的安装与配置
    1.下载Java安装包https://www.oracle.com/java/technologies/javase/javas e8-archive-downloads.html(网址链接) 下载自己需要的版本2.安装JDK找到下载位置【打开】 下一步有需要更改位置下一步到这一步就算下载完成3.配置环境变量  1.在电脑下方搜索......
  • pbootcms伪静态设置教程含apache、naginx、IIS不同环境配置规则
    其实pbootcms伪静态已经整理好,在根目录就可以找到作为使用者,只需要根据不同的服务器环境,使用不同格式的数据就行。 naginx#请复制下面伪静态配置到nginx配置文件中:#规则适合PbootCMSV2.0+版本location/{ if(!-e$request_filename){ rewrite^/(.*)$/index.php......
  • VisualStudio 通过配置 DefaultXamlRuntime 属性 让控制台项目里的 XAML 应用上智能提
    本文记录一个VisualStudio黑科技,通过配置DefaultXamlRuntime属性,即可让非WPF或WinUI或MAUI等系列类型的项目也可以拥有XAML的智能提示,智能提示方式和WinUI智能提示行为相同比如说在一个控制台项目里面,我期望从控制台开始,定制自己的UI框架,比如说到现在还没有支持......
  • 部署K8S集群(五):配置文件之Pod配置文件
    ●Pod是Kubernets中的基本执行单位,可以包含一个或多个容器。●Pod提供了容器间的网络和存储共享。apiVersion:v1kind:Podmetadata:name:my-podlabels:app:my-appspec:containers:#容器1:web页面#容器名称-name:web-container#容器......
  • Javaweb之SpringBootWeb案例文件上传的详细解析
     2.文件上传在我们完成的新增员工功能中,还存在一个问题:没有头像(图片缺失)编辑上述问题,需要我们通过文件上传技术来解决。下面我们就进入到文件上传技术的学习。文件上传技术这块我们主要讲解三个方面:首先我们先对文件上传做一个整体的介绍,接着再学习文件上传的本地存储方式,最后......
  • 微信小程序开发系列7----页面配置--WXML的include用法
       传递变量   模板不能引用 ......
  • 【快速解决】Maven安装和配置详细教程,解决你可能出现的问题Error: JAVA_HOME not foun
    看着文章一步一步来......
  • 13-流统配置
    简介通常情况下,网络运行过程中,会出现一种情况,就是网络时通时不通,可以通过流统命令来查看数据包是丢在哪里了,更快的定位问题点。也是为了防止被甩锅,数据包明明没过来,非得说是我网络设备问题!!!1、定义ACL定义基本ACL3500,对源IP地址为58.132.200.106的报文进行分类。system-......
  • stm32使用cubumx配置串口不定长接收
    前言此方法利用stm32的uart+dma来实现不定长接收,利用dma中的空闲中断。设置USART1为异步通信方式使能串口1全部中断设置USART1_RX的DMA中断接收 速度设置最大(其实用115200没有影响但为保证工程严谨性)检查中断优先级这两个中断是否开启  生成代码后......
  • 【nginx】配置代理跳转
    背景服务节点1:有浏览器,未开通网络策略服务节点2:无浏览器,开通了对接第三方平台的网络策略现在想在服务节点1使用浏览器,通过服务节点2去访问第三方平台。在服务节点2搭建一个nginx,监听端口8800,通过node2:8800去访问第三方平台管理页面node2的nginx.conf示例:serve......