未读代码 未读代码
首页
  • Java 18 新功能介绍
  • Java 17 新功能介绍
  • Java 16 新功能介绍
  • Java 15 新功能介绍
  • Java 14 新功能介绍
  • Java 8 新特性

    • Java 8 Lambda 表达式
    • Java 8 Stream 流式操作
    • Java 8 时间处理介绍
    • Java 8 Optional 介绍
  • Java 开发工具
Java 源码分析
Spring Boot 系列
  • Arthas 问题定位
  • JMH 基准测试
GitHub (opens new window)
首页
  • Java 18 新功能介绍
  • Java 17 新功能介绍
  • Java 16 新功能介绍
  • Java 15 新功能介绍
  • Java 14 新功能介绍
  • Java 8 新特性

    • Java 8 Lambda 表达式
    • Java 8 Stream 流式操作
    • Java 8 时间处理介绍
    • Java 8 Optional 介绍
  • Java 开发工具
Java 源码分析
Spring Boot 系列
  • Arthas 问题定位
  • JMH 基准测试
GitHub (opens new window)
  • Java 开发

  • Java 开发工具

    • Apache HttpClient 5 使用详细教程
    • Jackson 解析 JSON 详细教程
    • Guava - 拯救垃圾代码,写出优雅高效,效率提升N倍
    • 抛弃Eclipse,投入IDEA 的独孤求败江湖
    • Java 反编译工具的使用与对比分析
    • 如何使用 Lombok 进行优雅的编码
    • 使用MyBatis Generator自动生成Model、Dao、Mapper相关代码
    • 使用Apache Ant 进行Java web项目打包并部署至TOMCAT
    • Linux配置Tomcat的单机多实例
  • 消息中间件

  • Java 开发
  • Java 开发工具
程序猿阿朗
2018-12-30

如何使用 Lombok 进行优雅的编码

Project Lombok 是一个 java 库,它可以通过注解自动为你要编写的类添加相应功能,如 get/set 方法,提高了开发效率。

引入 POM 依赖。

<!-- Lombok核心依赖 -->
<dependency>
       <groupId>org.projectlombok</groupId>
       <artifactId>lombok</artifactId>
       <version>1.18.4</version>
       <scope>provided</scope>
</dependency>
<!-- 添加logback日志框架支持,(可有可无) -->
<dependency>
       <groupId>ch.qos.logback</groupId>
       <artifactId>logback-classic</artifactId>
       <version>1.0.6</version>
</dependency>
1
2
3
4
5
6
7
8
9
10
11
12
13

查看依赖关系可以发现 logback-classic 依赖了 SLF4J-API 日志门面以及 logback-core 日志实现框架。

添加的pom依赖 关于日志注解的选择,可以参考官方文档 (opens new window)。默认的日志输出注释类为被注释的类路径,也可以使用 topic 参数自定义,如@Slf4j(topic="reporting"). 一般我们都会选择 @Slf4j 这个日志抽象类。在使用这个注解的时候需要导入 SLF4-API 抽象层以及具体的日志实现框架,上方的依赖中我们已经添加了日志依赖。

@CommonsLog
Creates private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);
@Flogger
Creates private static final com.google.common.flogger.FluentLogger log = com.google.common.flogger.FluentLogger.forEnclosingClass();
@JBossLog
Creates private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LogExample.class);
@Log
Creates private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());
@Log4j
Creates private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class);
@Log4j2
Creates private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);
@Slf4j
Creates private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
@XSlf4j
Creates private static final org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

Lombok 的使用主要是几个注解,下面介绍常用的几个注解。

@Getter/@Setter 为属性生成 get 和 set 方法。

@ToString 生成 toString 方法,输出各个属性值。

@EqualsAndHashCode 生成 equals 和 hashCode 方法。

@NoArgsConstructor 生成无惨构造器。

@AllArgsConstructor 生成全参数构造器。

@Data 是一个方便注解,它捆绑了 @ToString @Getter/@Setter @EqualsAndHashCode 以及 @RequiredArgsConstructor.

根据上面的解释,用下面的一个例子演示用法。

import lombok.*;
import lombok.extern.slf4j.Slf4j;

/**
 * <p>
 * Lombok使用
 *
 * @Author niujinpeng
 * @Date 2018/12/10 11:05
 */
@Slf4j(topic = "Lombok")
public class LombokTest {

    public static void main(String[] args) {
        Person person1 = new Person();
        person1.setName("Darcy");
        person1.setAge(22);
        person1.setTeacher(true);
        log.info(person1.toString());

        Person person2 = new Person("Darcy", 22, true);
        log.info(person2.toString());

        boolean equals = person1.equals(person2);
        log.info("Equals:" + equals);
        log.info(person1.hashCode() + " and " + person2.hashCode());
    }
}

//@Getter
//@Setter
//@ToString
//@EqualsAndHashCode
@Data
@NoArgsConstructor
@AllArgsConstructor
class Person {
    private String name;
    private Integer age;
    private boolean isTeacher;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

可以看到 Person 类除了几个属性定义之外没有其他任何方法代码,运行 LombokTest 可以在控制台看到输出如下。

12:12:57.687 [main] INFO  Lombok - Person(name=Darcy, age=22, isTeacher=true)
12:12:57.690 [main] INFO  Lombok - Person(name=Darcy, age=22, isTeacher=true)
12:12:57.690 [main] INFO  Lombok - Equals:true
12:12:57.690 [main] INFO  Lombok - 1423350487 and 1423350487

Process finished with exit code 0
1
2
3
4
5
6

订阅

文章持续更新,订阅可以关注「 程序猿阿朗 」公众号或者未读代码博客。

文章作者: 程序猿阿朗
文章链接:https://www.wdbyte.com/2018/12/develop/tool-Lombok/
版权声明:本网站当前文章采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 未读代码!
#Lombok#开发工具
上次更新: 2022/12/05, 08:18:32
Java 反编译工具的使用与对比分析
使用MyBatis Generator自动生成Model、Dao、Mapper相关代码

← Java 反编译工具的使用与对比分析 使用MyBatis Generator自动生成Model、Dao、Mapper相关代码→

最近更新
01
如何搭建一个自己的音乐服务器
12-04
02
JUnit 5 单元测试教程
11-17
03
使用 StringUtils.split 的坑
11-02
更多文章>

提示:评论前请刷新页面,否则评论的可能不是当前文章。

Theme by Vdoing | Copyright © 2018-2022 程序猿阿朗 | MIT License | 皖ICP备20000567号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式