Lombok注解:让代码简洁优雅

62 阅读3分钟

Lombok注解

什么是Lombok?

Lombok(Project Lombok)是一个用于 Java 编程语言的开源库,旨在减少 Java 代码中的冗余和样板代码,提高开发人员的生产力。它通过使用注解来自动生成 Java 类的常见方法和代码,从而使开发人员能够编写更简洁、更具可读性和更易维护的代码。

Lombok 的主要目标是简化 Java 开发,减少样板代码,使代码更加精炼,从而提高开发效率。

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

它利用注解方式自动生成 Java bean 中 getter、setter、equals 等方法,还能自动生成 logger、toString、hashCode、builder 等,日志相关变量、Object 类方法或设计模式相关的方法。虽然有人可能会说IDE里面都自带自动生成这些方法的功能,但是使用lombok会使代码看起来更加简洁,写起来也更加方便。

Lombok插件安装

如果IDEA版本在2020.3以上,不需要安装Lombok插件;

如果IDEA版本在2020.3以下,需要安装插件,点击File->Setting->Plugins,搜索Lombok,安装。

Lombok依赖

普通maven项目Lombok依赖为:

<dependencies>
    <dependency>        
    <groupId>org.projectlombok</groupId>        
    <artifactId>lombok</artifactId>        
    <version>1.18.22</version>        
    <scope>provided</scope>   
    </dependency>
</dependencies>

Scope可以是provided,即只在编译和测试阶段生效,运行阶段已经编译好或容器提供即可。

SpringBoot项目Lombok的引入方式为:

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

常用的 Lombok 注解

以下是一些常用的 Lombok 注解及其作用: (在IDEA中,按住Alt+7可以查看Lombok生成的代码)  

  • @Getter 和 @Setter

    作用:用于自动生成类的 getter 和 setter 方法。

    位置:类上方或属性上方,在属性上方则为属性生成 getter 和 setter 方法,在类上方表示给该类下的所有属性生成getter 和 setter 方法。

    注:1. static修饰的变量不生成getter 和 setter 方法。 2. final修饰的变量只生成getter方法。 @NonNull: 可以帮助我们避免空指针。

    import lombok.NonNull;

    使用public NonNullExample(@NonNull Person person)

    代替 if (person == null) { throw new NullPointerException("person "); }

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

  • @ToString :生成 toString() 方法,方便对象的字符串表示。  

  • @EqualsAndHashCode :生成 equals() 和 hashCode() 方法。  

  • @Data :相当于同时添加@Getter、@Setter、@ToString、@EqualsAndHashCode和@RequiredArgsConstructor五个注解,生成全套常见方法。  

  • @Builder :生成 Builder 模式相关的代码,用于构建不可变对象(提供链式风格创建对象)。

  • @Value :生成不可变类,所有字段都是 final 的,适合创建值对象。

  • @Log、@Log4j、@ Log4j2、@Slf4j :在类中自动生成日志对象,在方法中可以直接使用。针对不同的日志实现产品,有不同的日志注解,使用@Log表示使用Java自带的日志功能,还有Log4j、Slf4j 等日志记录器。 通过使用这些注解,开发人员可以减少冗余的代码编写,提高代码质量,并降低了出错的机会。

总结

总之,Lombok 是一个有助于减少 Java 代码冗余和提高开发效率的强大工具。它的使用可以显著简化 Java 开发过程,提高代码的可读性和可维护性,从而让开发人员能够更专注于业务逻辑而不是样板代码。