SpringBoot 项目中 Lombok 的使用


Lombok 介绍

Lombok 官方网站地址:https://projectLombok.org

Lombok 是一个 Java 的类库,可以通过注解等方式插入到项目代码中,来增加 Java 代码的功能,只需要通过指定的注解,就可以实现指定的功能,极大的简化代码编写。

Lombok 能通过注解的方式,在编译期间自动为类属性生成构造函数、get/set 方法等内容,保持代码简洁的情况下保证类信息的完整性。

Lombok 引入

Lombok 插件支持 IDEA 插件安装,安装插件后可以在代码中更好的使用 Lombok 带来的增强功能,此外,Lombok 还可以在 Eclipse、MyEclispe 等编译器中安装使用,以此保证 Lombok 注解在编译阶段发挥作用。

IDEA 安装插件

  1. 通过文件 -> 设置,找到 Plugins,搜索 Lombok 插件,下载安装后重启 IDEA 生效。

image.png

  1. 安装 Lombok 插件后,可与在插件设置中配置是否开启,在 File -> Setting > Build,Execution,Deployment 下找到 Annotation Processors,勾选 Enable annotation processing 即可。

image.png

1.2 maven 引入依赖

Lombok 还可以通过 maven 坐标引入相关依赖信息

<!--Lombok依赖-->
<dependency>
    <groupId>org.projectLombok</groupId>
    <artifactId>Lombok</artifactId>
    <version>1.18.0</version>
</dependency>

2. Lombok常用注解

@Data 注解

Lombok 的 @Data 注解可以说是使用最频繁的,@Data 注解标注在一个类上,可以为当前类属性自动生成对应的 getter()、setter()、toString() 等方法,大大减少了开发过程的代码量,让类定义更加简洁。

Lombok 中还有 @Getter/@Setter/@ToString 三个独立的注解,用于类中更精细的控制。

@Log4j 注解

在类中进行代码开发操作时,如果想要输出日志,则需要在类种进行如下的定义:

public static final Logger log = LoggerFactory.getLogger(Controller.class);

这样对于项目中繁多的类,每个都需要单独创建日志对象,太浪费时间。

如果项目使用 Lombok ,就可以使用 @Log4j 注解来解决这个问题,只需要在类上使用 @Log4j 注解,就会自动创建一个名为 log 的 Logger 对象,可以直接使用 log 对象进行日志输出。

@log4j
public class Test&#123;
  public void get()&#123;
    log.info("test");
  &#125;
&#125;

@NoArgsConstructor / @AllArgsConstructor

  • @NoArgsConstructor 代表为当前类生成一个无参构造方法;

  • @AllArgsConstructor 则是生成一个所有参数的构造方法

@NonNull

@NonNull 注解可以用于字段或者方法的参数,用来表示当前字段或参数不允许为 null,如果为 null 会抛出异常信息。

@Accessors 注解

@Data 注解可以为类的属性自动生成 getter/setter 等方法

而使用 @Accessors 注解可以用于控制类自动生成的 getter 和 setter 方法的形式,

@Accessors 注解可以设置的参数有:

  • @Accessors(fluent = true),代表 getter 和 setter 方法名都是属性名,且s etter 方法返回当前对象
@Data
@Accessors(fluent = true)
class User &#123;
     private Integer id;
     private String name;
     
     // 生成的 getter 和 setter 方法如下,方法体略
     //方法名与属性名相同,根据参数区分 get 和 set,且 setter 方法返回类对象本身
     public Integer id()&#123;&#125;
     public User id(Integer id)&#123;&#125;
     public String name()&#123;&#125;
     public User name(String name)&#123;&#125;
&#125;
  • @Accessors(chain = true),仅代表 setter 方法返回当前对象,方法名称为默认驼峰类型

    @Data
    @Accessors(chain = true)
    class User &#123;
       private Integer id;
       private String name;
       
       // 生成的 setter 方法如下,方法体略,get方法略
       public User setId(Integer id)&#123;&#125;
       public User setName(String name)&#123;&#125;
    &#125;
  • @Accessors(prefix = "f"),代表 getter 和 setter 方法会忽略属性中的指定 “f”前缀 (满足驼峰命名)

    @Data
    @Accessors(prefix = "f")
    class User &#123;
       private Integer fId;
       private String fName;
       
       // 生成的getter和setter方法如下,方法体略
       public Integer id()&#123;&#125;
       public void id(Integer id)&#123;&#125;
       public String name()&#123;&#125;
       public void name(String name)&#123;&#125;
    &#125;

注意: @Accessors 注解只是对 setter 和 getter 方法形式进行控制,仍然需要使用 Lombok 的 @Data注解来自动生成 getter 和 setter 方法。

@Builder

作用于类上,将类转变为建造者模式。

@Builder 注解单独使用就能完成建造者模式的实现,不需要使用 @Data 注解配合。

需要注意的是,在使用 @Builder 注解标注的类,默认只会定义全参数构造函数,如果想要定义无参构造方法,则需要与 @AllArgsConstructor/@NoArgsConstructor 注解配合使用。


文章作者: shone
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 shone !
评论
 上一篇
【chrome 插件】PhotoShow 浮图秀:网页图片浏览利器 【chrome 插件】PhotoShow 浮图秀:网页图片浏览利器
PhotoShow 谷歌插件介绍和使用文档PhotoShow 浮图秀介绍PhotoShow(浮图秀)是一款帮助用户快速查看页面中缩略图对应大图的谷歌浏览器插件,可以在浏览网页时随时对其中的图片文件进行放大展示,无需点击进入详情后预览图片。
2023-08-02
下一篇 
MarkDown 绘图小技巧 MarkDown 绘图小技巧
MarkDown 语法在记笔记、写文章等方面越来越受到更多人的喜欢,掘金、CSDN 等平台的文章内容就是 MarkDown 语法格式。 MarkDown 编译器可以把引用的语法对应成相应的 HTML 标签,不同的插件对应的语法也不太一样,
2023-07-31 shone
  目录