Lombok
# What is Lombok
在编写 JavaBean 代码时,往往需要为成员属性编写 setter/getter,这些代码的特点是量大, 机械。 Lombok 可以通过注解的方式在编译时期自动生成这些方法,减少了JavaBean编写的工作量。其额外提供的其他方法也降低了 JavaBean 的编写难度。
# How to use Lombok
由于Lombok工作在编译阶段,读取成员属性为其生成特定的方法,在编码阶段 IDE 无法生成这些方法相关的代码提示。所以在使用 Intellij IDEA 需要安装插件配合 。
使用Maven 导入 lombok:
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
</dependencies>
2
3
4
5
6
7
8
@Getter
注解在类或字段上,为所有非 final 字段生成 getter() 方法。
@Setter
注解在类上,为所有非 final 字段生成 setter() 方法。
@ToString
注解在类上,为类自动生成 toString() 方法
@EqualsAndHashCode
注解在类上,生成 hashCode 和 euquals 方法。
@NoArgsConstructor
注解在类上,生成无参构造方法。
@RequiredArgsConstructor
@RequiredArgsConstructor 注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。
# 在 Spring 注入写法1
public class HelloController() {
@Autowired
private HelloService helloService;
}
# 在 Spring 注入写法2
public class HelloController() {
private HelloService helloService;
@Autowired
HelloController(HelloService helloService) {
this.helloService = helloService;
}
}
# Lombok 方式
@RequiredArgsConstructor
public class HelloController() {
final HelloService helloService;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@AllArgsConstructor
注解在类上,生成包含所有参数的构造方法。
@Data
注解在类上,生成 setter/getter, equals, canEqual, hashCode, toString 方法。不会为 final 字段生成 setter 方法。
@Slf4j
注解在类上,生成 log 变量。 private static final Logger log = LoggerFactory.getLogger(xxx.class);
@FiledNameConstants
注解在类上,为所有字段名生成同名常量,置于内部类 Field 下。常用于数据库查询。
@FieldNameConstants
class Person {
String name;
String age;
}
// "name".equals(Person.Fields.name); == true
2
3
4
5
6