lombok 样板代码简化

本文最后更新于:2021年9月29日 凌晨

概览:Slf4j日志

lombok

Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注解实现这一目的。

  • 可以通过注解生成样板代码,即get\set\tostring等方法。
  • lombok是一个IDE插件,也是一个项目要依赖的jar包。
  • 编译时使用
  • Intellij idea开发的话需要安装Lombok plugin,同时设置 Setting -> Compiler -> Annotation Processors -> Enable annotation processing勾选。

依赖:

1
2
3
4
5
6
7
8
9
10
11
12
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
</dependencies>

作者:武培轩
链接:https://www.zhihu.com/question/42348457/answer/1242975737
来源:知乎

1
2
3
4
5
6
7
8
9
10
11
@NonNull: 可以帮助我们避免空指针。
@Cleanup: 自动帮我们调用close()方法。
@Cleanup InputStream in = new FileInputStream(args[0]);
@Getter / @Setter: 自动生成Getter/Setter方法
@NoArgsConstructor: 自动生成无参数构造函数。
@AllArgsConstructor: 自动生成全参数构造函数。
@Data: 自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter方法,
为非final字段添加@Setter,和@RequiredArgsConstructor!
@Builder 会自动生成构造者模式,方便对属性 set/get 操作; @Synchronized 会自动生成同步锁;
@SneakyThrows 会自动生成 try/catch 捕捉异常;
@Slf4j 是日志相关的,会自动为类添加日志支持。日志默认名称就是log。

使用Demo

Stu对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.example.springbootdem0.entity;

import lombok.*;

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Builder
public class Stu {
private int id;
private String name;
private int age;
private String mark;
}

TestStu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package com.example.springbootdem0.Service;

import com.example.springbootdem0.entity.Stu;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

@Service
@Slf4j
public class TestStu {

public int func(){
log.info("func run ...");
Stu stu = Stu.builder()
.id(1)
.age(18)
.name("小明")
.mark("备注").build();
log.info("生成一个stu对象:{}",stu.toString());
return 0;
}
}

log相关需要配置文件logback.xml

1
2
3
4
5
6
7
8
9
10
11
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>

<root level="info">
<appender-ref ref="STDOUT"/>
</root>
</configuration>

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!