博客
关于我
Lombok天天用,它的原理是什么你知道吗?
阅读量:791 次
发布时间:2023-02-06

本文共 2138 字,大约阅读时间需要 7 分钟。

Lombok 是一个极大地方便 Java 开发的工具,它通过注解简化代码编写流程。本文将深入探讨 Lombok 的工作原理及其应用场景。

Lombok 的基本使用

Lombok 的核心功能是通过注解自动生成 getter、setter 方法及其他常见代码片段。例如,以下代码使用 @Data 注解后,会自动生成相应的方法:

@Datapublic class TestLombok {    private String name;    private Integer age;    public static void main(String[] args) {        TestLombok testLombok = new TestLombok();        testLombok.setAge(12);        testLombok.setName("zs");    }}

编译后的类文件将包含以下自动生成方法:

public class TestLombok {    private String name;    private Integer age;    public static void main(String[] args) {        TestLombok testLombok = new TestLombok();        testLombok.setAge(12);        testLombok.setName("zs");    }    public TestLombok() {    }    public String getName() {        return this.name;    }    public Integer getAge() {        return this.age;    }    public void setName(String name) {        this.name = name;    }    public void setAge(Integer age) {        this.age = age;    }}

编译时注解的工作原理

Lombok 的核心在于利用 Java 的编译期注解处理器(Abstract Processing Tool, APT)。编译期注解处理器能够在源代码编译阶段解析注解信息,并根据注解定义自动生成代码。

注解处理器的作用

  • 注解定义:通过 @Data 注解等自定义注解,指定需要处理的元素和方法。
  • 注解处理器:编写继承自 AbstractProcessor 的处理器类,接收注解信息并根据注解定义生成代码。

代码生成过程

  • 注解定义

    定义自定义注解并指定保留范围:

    @Retention(RetentionPolicy.SOURCE)@Target(ElementType.TYPE)public @interface GeneratePrint {    String value();}
  • 注解处理器

    编写处理器类,继承自 AbstractProcessor,并在 process 方法中生成目标代码:

    @SupportedAnnotationTypes("GeneratePrint")public class GeneratePrintProcessor extends AbstractProcessor {    @Override    public boolean process(Set
    annotations, RoundEnvironment roundEnv) { // 生成目标代码 }}
  • 测试类与注解应用

    在测试类上使用自定义注解:

    @GeneratePrint("Hello World")public class TestAno {    public static void main(String[] args) {        System.out.println("Hello World");    }}
  • 项目实践

    安装与配置

    在项目中引用 Lombok 依赖:

    org.projectlombok
    lombok
    1.16.6

    使用场景

    Lombok 适用于简化 boilerplate 代码,主要应用于:

    • POJO 类:通过 @Data 自动生成 setter、getter 方法和 equals、hashCode 方法。
    • 日志处理:通过 @Slf4j 自动生成Slf4j日志注入。
    • 异常处理:通过 @ExceptionHandling 自动生成异常处理代码。

    总结

    Lombok 通过编译期注解处理器,显著提升了 Java 开发效率。通过简单的注解定义,可以自动生成常见代码片段,减少手动编写的工作量。无论是 POJO 类还是其他模块,Lombok 都能提供方便的解决方案。

    转载地址:http://ejufk.baihongyu.com/

    你可能感兴趣的文章
    Linux 常用命令之cat、tac、nl
    查看>>
    Linux 环境下将 ASM 磁盘映射到物理磁盘的完整指南
    查看>>
    Linux 进程间通信 --- 信号通信 --- signal --- signal(SIGINT, my_func); --- 按键驱动异步通知...
    查看>>
    linux 配置 skywalking
    查看>>
    linux 防火墙操作
    查看>>
    linux--make/进度条
    查看>>
    Linux--进程状态
    查看>>
    Linux-服务器远程控制
    查看>>
    Linux/CentOS设置全局代理(http)
    查看>>
    Linux_服务器_01_查看公网IP
    查看>>
    Linux——gcc编译器
    查看>>
    Linux——静态库
    查看>>
    Linux下tar bz gz等压缩包的压缩和解压【转自www.bitsCN.com】
    查看>>
    Linux下安装或升级Python 2.7
    查看>>
    Linux下的硬件管理与设备驱动全解析
    查看>>
    Linux下的系统监控与性能调优:从入门到精通
    查看>>
    Linux学习总结(26)——Shell常用命令总结
    查看>>
    Linux学习总结(65)——Linux 服务器安全强化的七个步骤
    查看>>
    Linux学习笔记008---Centos7中Couldn't resolve host 'mirrorlist.centos.org'
    查看>>
    Linux安装gcc/gcc-c++
    查看>>