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)!