📜  lombok maven 插件 - Java (1)

📅  最后修改于: 2023-12-03 15:02:47.992000             🧑  作者: Mango

Lombok Maven 插件 – 简化 Java 编程的利器

Lombok Maven 插件可以使 Java 编程更加简单和高效。它提供了一些注解,可以自动生成 getter、setter、构造函数等常见的函数,从而大大减少了代码量和开发时间。本文将介绍 Lombok Maven 插件的使用方法和常见注解,以及它对 Java 开发的贡献。

安装 Lombok Maven 插件
  1. 在 Maven 项目的 pom.xml 文件中,添加以下依赖项:

    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.20</version>
      <scope>provided</scope>
    </dependency>
    
  2. 在 IDE 中安装 Lombok 插件。不同的 IDE 安装方式不同,可以参考官方文档进行安装。

常见注解
@Getter@Setter

@Getter@Setter 注解可以自动生成类的 getter 和 setter 方法。在 IDE 中输入属性名后,Lombok 会自动生成对应的方法,代码如下:

@Getter @Setter
public class Person {
    private String firstName;
    private String lastName;
}

上述代码相当于手动编写如下代码:

public class Person {
    private String firstName;
    private String lastName;
   
    public String getFirstName() {
        return firstName;
    }
   
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
   
    public String getLastName() {
        return lastName;
    }
   
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}
@Data

@Data 注解包含了 @Getter@Setter@ToString@EqualsAndHashCode@AllArgsConstructor 注解的功能。使用 @Data 可以省略这些注解,让代码更加简洁。代码如下:

@Data
public class Person {
    private String firstName;
    private String lastName;
}
@NoArgsConstructor

@NoArgsConstructor 注解可以自动生成无参构造函数。如果不添加该注解,当类中有构造函数时,编译器就不会自动生成无参构造函数。代码如下:

@NoArgsConstructor
public class Person {
    private String firstName;
    private String lastName;

    public Person(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }
}
@AllArgsConstructor

@AllArgsConstructor 注解可以自动生成带参构造函数。使用 @AllArgsConstructor 可以省略手动编写构造函数的步骤。代码如下:

@AllArgsConstructor
public class Person {
    private String firstName;
    private String lastName;
}
@Builder

@Builder 注解可以使用链式调用的方式创建对象。代码如下:

@Data
@Builder
public class Person {
    private String firstName;
    private String lastName;
    private int age;
}

Person person = Person.builder()
                      .firstName("Tom")
                      .lastName("Smith")
                      .age(25)
                      .build();

上述代码相当于手动编写如下代码:

Person person = new Person();
person.setFirstName("Tom");
person.setLastName("Smith");
person.setAge(25);
@Slf4j

@Slf4j 注解可以自动生成日志记录器,使用时需要在类中添加如下代码:

@Slf4j
public class Person {
    private String firstName;
    private String lastName;
}

自动生成的日志记录器的名称为 log,可以在类中直接使用。代码如下:

log.info("My name is {} {}", firstName, lastName);
使用示例

下面是一个使用 Lombok 的示例代码。该类中使用了 @Data@NoArgsConstructor@AllArgsConstructor@Builder@Slf4j 注解,非常简洁。

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Slf4j
public class Person {
    private String firstName;
    private String lastName;
    private int age;

    public void sayHello() {
        log.info("Hello, my name is {} {} and I am {} years old.", firstName, lastName, age);
    }
}

Person person = Person.builder()
                      .firstName("Tom")
                      .lastName("Smith")
                      .age(25)
                      .build();
person.sayHello();

上述代码相当于手动编写如下代码:

public class Person {
    private String firstName;
    private String lastName;
    private int age;

    private static final Logger log = LoggerFactory.getLogger(Person.class);

    public Person() {
    }

    public Person(String firstName, String lastName, int age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
    }

    public void sayHello() {
        log.info("Hello, my name is {} {} and I am {} years old.", firstName, lastName, age);
    }

    public static void main(String[] args) {
        Person person = new Person("Tom", "Smith", 25);
        person.sayHello();
    }
}
总结

Lombok Maven 插件极大地简化了 Java 编程的过程,让代码更加简洁、易读。本文介绍了 Lombok Maven 插件的安装和常见的注解,希望对 Java 开发有所帮助。