java 编译时注解框架 lombok

Wesley13
• 阅读 676

lombok-ex

lombok-ex 是一款类似于 lombok 的编译时注解框架。

编译时注,拥有运行时注解的便利性,和无任何损失的性能。

主要补充一些 lombok 没有实现,且自己会用到的常见工具。

创作目的

  • 补充 lombok 缺失的注解,便于日常开发使用。

  • lombok 的源码基本不可读,应该是加密处理了。

  • 为其他注解相关框架提升性能提供基础,后期考虑替换为编译时注解。

特性

  • @Serial 支持

(1)类实现序列化接口

(2)类生成 serialVersionUID 字段,字段的值可以通过 value() 属性指定。

  • @Util 支持

(1)类设置为 final

(2)类构造器私有化

变更日志

变更日志

快速开始

准备工作

  • jdk1.7+

  • maven 3.x+

  • 编译器启用编译时注解功能。

如 idea 启用 enable annotation process

maven 引入

<dependency>
    <groupId>com.github.houbb</groupId>
    <artifactId>lombok-ex</artifactId>
    <version>0.0.2</version>
    <scope>provided</scope>
</dependency>

例子

  • User.java

我们定义一个简单的 pojo,使用 @Serial

package com.github.houbb.lombok.test.model;

import com.github.houbb.lombok.ex.annotation.Serial;

@Serial
public class User {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

编译

直接使用 maven 命令编译

$   mvn clean install

编译结果

查看对应的 User.class 文件,内容如下:

package com.github.houbb.lombok.test.model;

import java.io.Serializable;

public class User implements Serializable {
    private static final Long serialVersionUID = 1L;
    private String name;

    public User() {
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

@Util 使用案例

注解使用

@Util
public class StringUtil {

    public static boolean isEmpty(final String string) {
        return null == string || "".equals(string);
    }

}

效果

public final class StringUtil {
    private StringUtil() {
    }

    public static boolean isEmpty(String string) {
        return null == string || "".equals(string);
    }
}

代码开源地址

所有代码均已开源,见 lombok-ex

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java10下编译lombok注解的代码
序本文主要研究下在带有lombok(1.16.20版本)注解的代码在java10下的编译问题。问题Fatalerrorcompilingatorg.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)
Stella981 Stella981
3年前
SpringBoot配置lombok,与logback
目录:一什么是lombok二lombok安装三使用lombok四使用logback一什么是lombok  在写Java程序的时候经常会遇到如下情形:新建了一个Class类,然后在其中设置了几个字段,最后还需要花费很多时间来建立getter,setter方法还有构造函数等。  lombok项目的产生就是为了省去我们手动创
Wesley13 Wesley13
3年前
Java开发奇技淫巧
lombok 提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的java代码。特别是相对于POJO,有了它妈妈再也不用担心你的Entity啦.             lombok的官方网址:http://projectlombok.org/(https://www.oschina.net/action/GoToLi
Stella981 Stella981
3年前
Lombok经常用,但是你知道它的原理是什么吗?(二)
在上一篇Lombok经常用,但是你知道它的原理是什么吗?(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fjuejin.im%2Fpost%2F5e54d38a6fb9a07cbf46b3ca)简单介绍了注解处理器,是用来处理编译期的注解的一个工具,我们只是自己生成了一些代码,但是和Lo
Stella981 Stella981
3年前
Lombok经常用,但是你知道它的原理是什么吗?
相信大家在项目中都使用过Lombok,因为能够简化我们许多的代码,但是该有的功能一点也不少。那么lombok到底是个什么呢,lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,简单来说,比如我们新建了一个类,然后在其中写了几个字段,然后通常情况下我们需要手动去建立getter和setter方法啊,构造函
Easter79 Easter79
3年前
SpringBoot配置lombok,与logback
目录:一什么是lombok二lombok安装三使用lombok四使用logback一什么是lombok  在写Java程序的时候经常会遇到如下情形:新建了一个Class类,然后在其中设置了几个字段,最后还需要花费很多时间来建立getter,setter方法还有构造函数等。  lombok项目的产生就是为了省去我们手动创
Stella981 Stella981
3年前
Lombok使用2:常用注解
本篇文章会讲到:@Setter,@Getter、@Getter(lazytrue)、@ToString、@EqualsAndHashCode、@NoArgsConstructor、@AllArgsConstructor、@RequiredArgsConstructor、@Data注解使用1、@Setter,@Getter使用@S
Stella981 Stella981
3年前
Lombok使用3:其他注解
本篇文章会讲到:@NonNull、@Cleanup、@UtilityClass、@Log、@SneakyThrows、@Synchronized注解使用1、@NonNull使用@NonNull文档官方地址(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fproj