首页 > 其他分享 >Spring Boot 之 Lombok 使用详解

Spring Boot 之 Lombok 使用详解

时间:2024-10-09 09:49:19浏览次数:11  
标签:String Spring Boot private public import Lombok lombok

Lombok 是一个 Java 库,它通过注解自动生成样板代码,例如 getter、setter、构造函数、equals()、hashCode() 等,从而减少代码冗余,提高开发效率。在 Spring Boot 项目中使用 Lombok 可以使代码更加简洁易读。

本文将详细介绍 Lombok 在 Spring Boot 中的使用。

1. 添加 Lombok 依赖:

在你的 pom.xml 文件中添加以下依赖:

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

optional 设置为 true 表示该依赖是可选的,不会传递到依赖项目中,避免冲突。

2. 安装 Lombok 插件 (IDE 支持):

为了使 IDE 能够正确识别 Lombok 生成的代码,需要安装 Lombok 插件。以 IntelliJ IDEA 为例,可以在 Settings/Preferences -> Plugins 中搜索 "Lombok" 并安装。(图标是一个红色的辣椒)安装后记得重启IDEA生效!

f22b6d07c1d1442d9a3ad96090e89525.png

3. 常用注解:

Lombok 提供了丰富的注解,以下是一些常用的注解及其使用方法:

  • @Data: 这是一个组合注解,相当于 @Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor 的组合。它会生成所有字段的 getter 和 setter 方法,toString()、equals() 和 hashCode() 方法,以及一个包含 final 字段和非空字段的构造函数。

    import lombok.Data;
    
    @Data
    public class User {
        private Long id;
        private String name;
        private String email;
    }

     

  • @Getter 和 @Setter: 分别生成 getter 和 setter 方法。可以作用于类或字段。

    import lombok.Getter;
    import lombok.Setter;
    
    public class Product {
        @Getter @Setter
        private Long id;
    
        @Getter
        private String name;
    
        @Setter
        private double price;
    }

     

  • @ToString: 生成 toString() 方法,可以自定义输出格式。

    import lombok.ToString;
    
    @ToString(exclude = {"password"}) // 排除 password 字段
    public class User {
        private String username;
        private String password;
        private String email;
    }

     

  • @EqualsAndHashCode: 生成 equals() 和 hashCode() 方法。可以指定参与比较的字段。

    import lombok.EqualsAndHashCode;
    
    @EqualsAndHashCode(of = {"id", "name"}) // 只比较 id 和 name 字段
    public class Product {
        private Long id;
        private String name;
        private double price;
    }

     

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

    import lombok.NoArgsConstructor;
    
    @NoArgsConstructor
    public class Order {
        private Long id;
        private String orderNumber;
    }

     

  • @AllArgsConstructor: 生成包含所有字段的构造函数。

    import lombok.AllArgsConstructor;
    
    @AllArgsConstructor
    public class Item {
        private Long id;
        private String name;
        private int quantity;
    }

     

  • @Builder: 生成 builder 模式代码,方便创建对象。这个还是比较好用的

    import lombok.Builder;
    
    @Builder
    public class Address {
        private String street;
        private String city;
        private String zipCode;
    
        public static void main(String[] args) {
            Address address = Address.builder()
                    .street("123 Main St")
                    .city("Anytown")
                    .zipCode("12345")
                    .build();
    
            System.out.println(address);
        }
    }

     

  • @Slf4j: 生成一个名为 log 的日志对象,可以直接使用 log.info() 等方法输出日志。 (需要添加 slf4j 依赖)

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class LogExample {
    public static void main(String[] args) {
        log.info("Hello, Lombok!");
    }
}

 

4. 在 Spring Boot 中使用 Lombok:

在实体类、控制器、服务等组件中都可以使用 Lombok 注解。

示例:创建一个 User 实体类:

import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String email;
}

 

5. 总结:

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

额外提示:

  • 可以根据需要组合使用不同的 Lombok 注解。

  • 可以使用 @Accessors 注解自定义 getter 和 setter 方法的命名方式。

  • 可以使用 @SneakyThrows 注解简化异常处理。

希望这个上文能够帮助各位看官更好地理解和使用 Lombok! 记住要安装 IDE 插件才能使你的 IDE 正确识别 Lombok 生成的代码。

 

 

标签:String,Spring,Boot,private,public,import,Lombok,lombok
From: https://blog.csdn.net/weixin_64178283/article/details/142754354

相关文章

  • springboot 添加@Test(org.junit.Test) 注解后,idea右键菜单,没有运行项
    网上试了很多办法,包括检查idea的junit插件是否已安装,我安装了也用不了清除idea缓存,也不行。 后来将org.junit.Test换成  org.junit.jupiter.api.Test就可以了。maven引入包(注意这里版本换成5.9.3后不行)<dependency><groupId>org.junit.jupiter</groupI......
  • springboot 游泳馆管理系统-计算机毕业设计源码91863
     目录摘要1绪论1.1研究背景1.2研究意义1.3论文结构与章节安排2 游泳馆管理系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 经济可行性分析2.1.3法律可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分析2.3 系统用例分析2.4......
  • SpringBoot的摄影服务选购系统-计算机毕业设计源码91794
    摘要随着社会数字化的发展,人们对个性化服务和体验的需求不断增加,摄影服务行业也面临着更多线上服务的需求。摄影服务选购系统应运而生,该系统是一款基于Java语言、SpringBoot框架和MySQL数据库的在线平台,旨在满足日益增长的摄影服务需求。其开发背景源于对摄影服务行业数字化......
  • Spring Boot、MyBatis、MyBatis-Plus 依赖版本对应关系总结
    SpringBoot、MyBatis、MyBatis-Plus依赖版本对应关系总结在使用SpringBoot、MyBatis和MyBatis-Plus时,确保它们的依赖版本兼容是项目正常运行的关键。版本不兼容可能会导致诸如sqlSessionFactory、sqlSessionTemplate未正确配置等错误。因此,合理选择各个依赖的版本......
  • 【Spring Security OAuth2】- 【使用Spring MVC开发RESTful API】 异步处理rest服务
    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!阶段1、深入多线程阶段2、深入多线程设计模式阶段3、深入juc源码解析阶段4、深入jdk其余源码解析......
  • 【Spring Security OAuth2】- 【使用Spring MVC开发RESTful API】 使用切片拦截rest服
    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!阶段1、深入多线程阶段2、深入多线程设计模式阶段3、深入juc源码解析阶段4、深入jdk其余源码解析......
  • 【含文档+源码】基于SpringBoot的健身工作室管理系统的设计与实现
    项目背景与意义随着健身行业的快速发展,越来越多的消费者开始注重健康和身材管理,这使得健身房成为了一个蓬勃发展的行业。然而,随着客户数量的不断增加,如何有效管理客户信息,提供个性化服务,以及提升客户满意度,成为了健身房面临的重要挑战。传统的客户信息管理方式往往依赖于纸质......
  • springboot-网站开发-linux服务器部署jar格式图片存档路径问题
    springboot-网站开发-linux服务器部署jar格式图片存档路径问题!近期在部署自己的网站源码,使用的是jar格式的编码格式。发布到远程服务器后,发现客户捐款的证书图片存在异常。经过排查代码,找到了原因。下面分享给大家。1:首先,在linux服务器内部,存档图片,文件等资源的时候,本地java......
  • springboot-网站开发-thymeleaf引擎报错找不到指定的页面模板文件
    springboot-网站开发-thymeleaf引擎报错找不到指定的页面模板文件!这种错误的情况,发生,一般都是因为,我们自己的html模板文件,存档位置并不是在默认的templates下面。而是我们自己新建的一个子目录里面。然后,我们在java代码里面,控制器方法体内,return,返回模板的时候,我们多写了一个......
  • 基于数据可视化+Java+SpringBoot+Vue实现的高校食堂移动预约点餐系统设计与实现
    文章目录前言系统演示录像论文参考代码运行展示图技术框架SpringBoot技术介绍系统测试系统测试的目的系统功能测试推荐选题:代码参考实现案例找我做程序,有什么保障?联系我们前言......