使用 Lombok 减少 Java Bean 代码
“这篇文章将介绍如何使用Lombok 来减少 Java Bean 的代码”
简介
lombok 就是一款可以简化 get/set/toString/equals 等方法的工具!
安装
IDE安装
- IDEA
设置
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 下载手动添加
使用
快速入门
直接类上加@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,转载请保留以上链接