Spring学习笔记:尝试Lombok简化实体类代码

Posted howard2005

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring学习笔记:尝试Lombok简化实体类代码相关的知识,希望对你有一定的参考价值。

一、Lombok概述

Lombok能以简单的注解形式来简化Java代码,提高开发人员的开发效率。例如开发中经常需要写的JavaBean,都需要花时间去添加相应的getter/setter,也许还要去写构造器、equals等方法,而且需要维护,当属性多时会出现大量的getter/setter方法,这些显得很冗长也没有太多技术含量,一旦修改属性,就容易出现忘记修改对应方法的失误。

Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法。出现的神奇就是在源码中没有getter和setter方法,但是在编译生成的字节码文件中有getter和setter方法。这样就省去了手动重建这些代码的麻烦,使代码看起来更简洁些。虽然省去了手动创建getter/setter方法的麻烦,但大大降低了源代码的可读性和完整性,降低了阅读源代码的舒适度。

Lombok官网:https://projectlombok.org/
在这里插入图片描述

二、安装Lombok插件

  • 在设置对话框的插件里搜索Lombok
    在这里插入图片描述
  • 单击【Install】按钮
    在这里插入图片描述
  • 单击【Restart IDE】按钮
    在这里插入图片描述

三、Lombok注解

(一)@Data

@Data注解在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。

(二)@Getter/@Setter

如果觉得@Data太过残暴(因为@Data集合了@ToString、@EqualsAndHashCode、@Getter/@Setter、@RequiredArgsConstructor的所有特性)不够精细,可以使用@Getter/@Setter注解,此注解在属性上,可以为相应的属性自动生成Getter/Setter方法。

(三)@NonNull

该注解用在属性或构造器上,Lombok会生成一个非空的声明,可用于校验参数,能帮助避免空指针。

(四)@Cleanup

该注解能帮助我们自动调用close()方法,很大地简化了代码。

(五)@EqualsAndHashCode

默认情况下,会使用所有非静态(non-static)和非瞬态(non-transient)属性来生成equals和hasCode,也能通过exclude注解来排除一些属性。

(六)@ToString

类使用@ToString注解,Lombok会生成一个toString()方法,默认情况下,会输出类名、所有属性(会按照属性定义顺序),用逗号来分割。通过将includeFieldNames参数设为true,就能明确的输出toString()属性。这一点是不是有点绕口,通过代码来看会更清晰些。

(七)@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor

无参构造器、部分参数构造器、全参构造器。Lombok没法实现多种参数构造器的重载。

四、Lombok案例演示

(一)创建Spring Boot项目 - LombokDemo

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(二)创建用户实体类 - User

在这里插入图片描述

package net.hw.bean;

import com.sun.istack.internal.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.util.Date;

/**
 * 功能:用户实体类
 * 作者:华卫
 * 日期:2021年05月08日
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class User {
    @NotNull private int id;
    private String username;
    private String password;
    private String telephone;
    private Date registerTime;
}

(三)创建用户控制器 - UserController

在这里插入图片描述

package net.hw.controller;

import net.hw.bean.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

/**
 * 功能:用户控制器
 * 作者:华卫
 * 日期:2021年05月10日
 */
@RestController
public class UserController {
    @GetMapping("/user1")
    public String user1() {
        User user = new User();
        user.setId(1);
        user.setUsername("萌萌哒");
        user.setPassword("123456");
        user.setTelephone("15845456789");
        user.setRegisterTime(new Date());
        return user.toString();
    }

    @GetMapping("/user2")
    public String user2() {
        User user = new User(2, "哇哈哈", "345678", "15890903334", new Date());
        return "编号:" + user.getId() + "<br/>"
                + "用户名:" + user.getUsername() + "<br/>"
                + "密码:" + user.getPassword() + "<br/>"
                + "电话:" + user.getTelephone() + "<br/>"
                + "注册时间:" + user.getRegisterTime();
    }
}

(四)启动应用,测试效果

在这里插入图片描述

1、访问http://localhost:8080/user1

在这里插入图片描述

2、访问http://localhost:8080/user2

在这里插入图片描述

以上是关于Spring学习笔记:尝试Lombok简化实体类代码的主要内容,如果未能解决你的问题,请参考以下文章

如何简化实体类代码

idea安装Lombok plugin插件,实体不用get set简化开发

Idea插件之Lombok简化实体类setter/getter操作

拥有实体实例 - Spring 和 Lombok 不再引用具有 cascade="all-delete-orphan" 的集合

Spring Boot 2从入门到入坟 | Best practices篇:使用Lombok插件来简化JavaBean的开发

Spring Boot 2从入门到入坟 | 最佳实践篇:使用Lombok插件来简化JavaBean的开发