自学内容网 自学内容网

Lombok

Lombok

Lombok 是一个 Java 库,用于减少 Java 中的样板代码(boilerplate code)。通过在 Java 类上使用注解,Lombok 自动生成构造函数、getter、setter、equals、hashCode、toString 方法等。这样可以极大地简化代码,提升开发效率,并提高代码的可读性和可维护性。

下面是一些常用的 Lombok 注解:

  • @Getter 和 @Setter: 自动生成 getter 和 setter 方法。
  • @ToString: 自动生成 toString 方法。
  • @EqualsAndHashCode: 自动生成 equals 和 hashCode 方法。
  • @NoArgsConstructor@AllArgsConstructor@RequiredArgsConstructor: 自动生成无参构造函数,所有参数的构造函数,以及根据 final 字段和带有 @NonNull 注解字段的构造函数。
  • @Data: 包含 @Getter@Setter@ToString@EqualsAndHashCode, 和 @RequiredArgsConstructor,用于将类标记为数据传输对象(DTO)。
  • @Builder: 提供构建者模式(Builder Pattern)的实现。

举例来说,如果你有一个简单的 Java 类:

// normal

public class Person {
    private String name;
    private int age;

    // Getters and setters
    // toString method
    // equals and hashCode methods
    // No-args constructor
}


// lambok

import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Person {
    private String name;
    private int age;
}

 @Slf4注解

Lombok 提供了一个 @Slf4j 注解,用于简化在类中添加日志功能。Slf4j 是 "Simple Logging Facade for Java" 的缩写,它是一个非常流行的日志门面库,可以与多种日志实现(如 Log4j、Logback 等)结合使用。

// 依赖配置: 你需要确保项目中已经包含 Lombok 和 Slf4j 的依赖。例如,在 Maven 项目中:

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class MyClass {

    public void doSomething() {
        log.info("This is an info message");
        log.debug("This is a debug message");
        log.error("This is an error message");
    }

    public static void main(String[] args) {
        MyClass obj = new MyClass();
        obj.doSomething();
    }
}


原理:
当你使用 @Slf4j 注解时,Lombok 会在编译时为类生成一个名为 log 的 Logger 静态实例。这个过程是通过 Lombok 的编译时注解处理(Annotation Processing)机制实现的。以下是 Lombok 自动生成的代码简化版本:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyClass {
    private static final Logger log = LoggerFactory.getLogger(MyClass.class);

    public void doSomething() {
        log.info("This is an info message");
        log.debug("This is a debug message");
        log.error("This is an error message");
    }

    public static void main(String[] args) {
        MyClass obj = new MyClass();
        obj.doSomething();
    }
}

MyClass.class 代表的是 MyClass 类的 Class 对象。在 Java 中,每个类都有一个隐式的 Class 对象,包含了类的元数据。通过 MyClass.class 可以取得 MyClass 这个类的 Class 实例,并传递给 LoggerFactory.getLogger 方法。


原文地址:https://blog.csdn.net/weixin_43416349/article/details/140596376

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!