Lombok的使用-自动生成代码-getter/setter/trycatch等

27 12月

Lombok 介绍

Lombok 是一个通过编译器时注入代码的开源库, 在 GitHub 上有3k+的好评, 可以点击这里去 GitHub 上进一步了解.

它可以通过一个注解帮你省去繁琐的JavaBean 中的 Getter/Setter/Constructor 等代码, 非常方便, 让代码变得简洁, 容易维护.

由于是在编译器对字节码进行修改, 所以不需要担心性能问题.

项目中集成Lombok

以 IntelliJ IDEA 2016为例子, 打开 setting -> Plugins -> Browse repositories 插件管理界面, 通过搜索找到 lombok 进行安装, 成功后需要重新启动 IDEA.

(Note: 有时候需要启用 IDEA 的 annotation 选项. Build.. -> Complier -> Annotation Processors -> Enable annotation processing 勾上)

然后添加 lombok 的项目依赖:

Maven:

Gradle:

Lombok 使用-常用的注解

@Getter/@Setter

你就可以直接使用这个 bean 的 getter/setter 方法啦

它的名字默认是字段的名字驼峰命名,当然你可以修改, 也可以规定它的权限为 public 的还是 private 的, 更甚者可以定义为 static 的等等

其中@Getter 注解中的 lazy = true 的话, 更可以实现 bean 的延迟初始化功能, 非常强大:

反编译后, 你会发现它生成的代码是这样的:

@ToString/@EqualsAndHashCode

很明显, 帮我们自动生成 toString 方法和 equals 方法, 免得每次日志打出来都是指针, 看不懂.

@Data

这个注解很简单, 如果写在类上面, 就相当于写了 @Getter/@Setter/@ToString/@EqualsAndHashCode 了, 是个”套餐”, 哈哈

@Cleanup

这个是用在Java IO流上面的, 它会帮我们自动生成 try catch finally 代码, 并在里面自动 close IO 流, 代码就看上去很简洁, IDEA 也不会提示你 try catch IO 异常了:

当然你也可以用 Java7自带的 closable 去 auto close IO 流, 但你始终逃不掉 try catch 的代码. 用@cleanup 吧, 哈哈

@Log

自动注入一个 logger 对象去记录日志, 可以自定义使用哪种日志框架

@SneakyThrows

帮你解决代码中抛出异常这件事. 在某个方法中, 需要 try catch 一个异常, 你又不想显示的 throw这个异常, 那么久交给这个注解吧, 在方法上写上后, 需要捕获异常的错误提示马上消失.

其他注解:

@Builder 帮你生成一个 Builder 模式的类

@NoArgsConstructor, @RequiredArgsConstructor ,@AllArgsConstructor 帮你实现各种构造函数

@Synchronized 帮你方法加锁

还有@Value val @UtilClass 等等…自己去慢慢探索吧, 哈哈哈哈….

发表评论

电子邮件地址不会被公开。