使用 Lombok 减少 Java Bean 代码

Author Avatar
Binux 4月 16, 2017
  • 在其它设备中阅读本文章

“这篇文章将介绍如何使用Lombok 来减少 Java Bean 的代码”

简介

lombok 就是一款可以简化 get/set/toString/equals 等方法的工具!

安装

IDE安装

  • IDEA
    20170416149232607786005.png

设置
20170418149248619455974.png

Enable annotation processing勾选

  • eclipse / myeclipse 手动安装 lombok (没试过)

    • 将 lombok.jar 复制到 myeclipse.ini / eclipse.ini 所在的文件夹目录下

    • 打开 eclipse.ini / myeclipse.ini,在最后面插入以下两行并保存:

      • -Xbootclasspath/a:lombok.jar
      • -javaagent:lombok.jar
    • 重启 eclipse / myeclipse

添加依赖

  • Maven 地址

    <dependencies>
      <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <version>1.16.16</version>
          <scope>provided</scope>
      </dependency>
    </dependencies>
    
  • Gradle 地址

    provided "org.projectlombok:lombok:1.16.16"
    
  • jar 下载手动添加

使用

快速入门

2017041614923263831722.png

直接类上加@Data注解 自动生成 getXxx()/setXxx()/toString()/equals(Object)等方法

注解说明

@NonNull

如果被注解属值为 null 将抛出 NullPointerException

可以修饰的对象为: FIELD(域),METHOD(方法),PARAMETER(参数),LOCAL_VARIABLE(局部变量)

@Cleanup

修饰 Java IO 类,会自动对资源调用close()方法关闭.

可以修饰的对象为: LOCAL_VARIABLE(局部变量)

@Getter / @Setter

自动生成 getXxx()/setXxx()

@Getter(lazy=true)

当需要使用get获取的值需要非常大资源计算 可以创建一个private final 变量使用@Getter(lazy=true)修饰 用这次计算的值对其进行赋值。

可以修饰的对象为: LOCAL_VARIABLE(局部变量),TYPE(类、接口(包括注解类型)、enum)

@ToString

自动生成 toString()

可以修饰的对象为: TYPE(类、接口(包括注解类型)、enum)

@EqualsAndHashCode

自动生成 equals()hashCode() 方法

可以修饰的对象为: TYPE(类、接口(包括注解类型)、enum)

@NoArgsConstructor、@RequiredArgsConstructor、@AllArgsConstructor

自动生成 构造无参方法、构造非final@NonNull修饰对象的有参构造方法、构造全部参数构造方法

可以修饰的对象为: TYPE(类、接口(包括注解类型)、enum)

@Data

组合注解相当于:@ToString@EqualsAndHashCode@Getter(全部)@Setter(非final字段)@RequiredArgsConstructor

可以修饰的对象为: TYPE(类、接口(包括注解类型)、enum)

@Value

被修饰的会加final@ToString@EqualsAndHashCode@AllArgsConstructor@FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE)@Getter

可以修饰的对象为: TYPE(类、接口(包括注解类型)、enum)

@Builder

生成一个内部类BuilderExampleBuilder可以使用链式编程创建对象。

如:Person.builder().name(“Binux”).city(“NanJing.”).build();

可以修饰的对象为: TYPE(类、接口(包括注解类型)、enum),CONSTRUCTOR(构造器),METHOD(方法)

@SneakyThrows

对修饰对象进行try-catch value为Throwable>[] value() 可以声明异常类型

可以修饰的对象为: CONSTRUCTOR(构造器),METHOD(方法)

@Synchronized

对修饰方法内进行加锁 value值为锁名称 锁为Object类型

如:private final Object $lock = new Object[0];

可以修饰的对象为: METHOD(方法)

@Log

当需要使用get获取的值需要非常大资源计算 可以创建一个private final 变量 用这次计算的值对其进行赋值。

  • @CommonsLog

    Creates private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);

  • @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);

可以修饰的对象为: TYPE(类、接口(包括注解类型)

详情请查看

https://projectlombok.org/features/index.html


总结

lombok 解决了成员类型修改后 还需重新生成getXxx/setXxx()/toString()等方法的问题,还是很实用的。


著作权声明

本文首次发布于 Binux Blog,转载请保留以上链接