代码整洁之道:Lombok 的使用

qiaohhgz 2018-12-03 15:21:14 ⋅ 641 阅读

一、简介:Lombok是什么

Lombok官网:https://projectlombok.org

Lombok.jpg


Lombok项目是一种自动接通你的编辑器和构建工具的一个Java库。不用再一次写额外的getter或者equals方法。

二、Lombok 优点

Lombok的两点主要原因就是:

(1)、简化冗余的JavaBean代码;
(2)、大大提高JavaBean中方法的执行效率;

三、安装使用

打开 IDEA 的 Settings 面板,并选择 Plugins 选项,然后点击 “Browse repositories”

在输入框输入”lombok”,得到搜索结果,点击安装,然后安装提示重启 IDEA,安装成功;

lombok安装.jpg

四、Maven依赖引入

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.18</version>
    <scope>provided</scope></dependency>

备注:scope=provided,说明它只在编译阶段生效,不需要打入包中。事实正是如此,Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件。

五、UserInfo 实体类为例(set,get,toString 方法)

@Getter@Setter@ToStringpublic class UserInfo implements Serializable

六、Lombok 其他注解

@Setter@Getter@Data@Log(这是一个泛型注解,具体有很多种形式)@AllArgsConstructor@NoArgsConstructor@EqualsAndHashCode@NonNull@Cleanup@ToString@RequiredArgsConstructor@Value@SneakyThrows@Synchronized

七、Lombok 常用注解使用详解

1、@Data

该注解使用在类上,该注解会提供getter、setter、equals、canEqual、hashCode、toString方法。

注意的是,同时使用@Data@AllArgsConstructor 后 ,默认的无参构造函数失效,如果需要它,要重新设置 @NoArgsConstructor
2、@Cleanup
@Cleanup InputStream in = new FileInputStream(args[0]);@Cleanup OutputStream out = new FileOutputStream(args[1]);
3、@val

类型推导

 val example = new ArrayList<String>();
 example.add("Hello, World!");

对应的转换后代码就是:

 val example = new ArrayList<String>();
 example.add("Hello, World!");
4、@ NonNull
public NonNullExample(@NonNull Person person) {    this.name = person.getName();
 }

转换后就是:

public NonNullExample(@NonNull Person person) {    if (person == null) {      throw new NullPointerException("person");
    }    this.name = person.getName();
 }
5、@ SneakyThrows

暗中抛出异常,当我们需要抛出异常,在当前方法上调用,不用显示的在方法名后面写 throw

@SneakyThrows(Exception.class)
6、@ SneakyThrows

该注解使用在方法上,这个注解用在 方法 上,可以将方法中的代码用 try-catch 语句包裹起来,捕获异常并在 catch 中用 Lombok.sneakyThrow(e) 把异常抛出,可以使用 @SneakyThrows(Exception.class) 的形式指定抛出哪种异常。该注解需要谨慎使用。

private final Object lock = new Object();@Synchronized("lock")public void foo() {    // Do something}
7、@toString

该注解使用在类上,该注解默认生成任何非讲台字段以名称-值的形式输出。

1、如果需要可以通过注释参数includeFieldNames来控制输出中是否包含的属性名称。 
2、可以通过exclude参数中包含字段名称,可以从生成的方法中排除特定字段。 
3、可以通过callSuper参数控制父类的输出。

总结:Lombok的目的是减少代码的重复编写,并提供比较好的解决方案。也存在一些争议性的注解,大家可以根据实际场景进项使用。

贡献者

  • IT实战联盟-Line


---------------END----------------

后续的内容同样精彩

长按关注“IT实战联盟”哦




全部评论: 0

    我有话说:

    刚刚入职新公司,为什么老大不让用Lombok

    刚刚入职一家新公司,在写业务时候引入了Lombok 结果在老大在代码审查时候在微信群里截图说不让在项目里面用Lombok,说是会带来各种问题,大家都还在用吗?

    Java Web实战篇-代码

    代码美-小小的优化让你代码Bug更少,执行效率更高

    淘宝开源代码质量检测工具!

    代码一定是整洁,并且能够帮助阅读人快速理解和定位。好代码可以加快应用开发迭代速度,不必花过多时间来修复 bug 和完善代码。好代码不但能够使得新项目成员更容易加入项目,同时方便项目

    「开源资讯」陌陌安全团队开源Java静态代码审计插件

    陌陌安全本次开源Java静态代码安全审计插件,侧重于在编码过程中发现项目潜在安全风险,并提供一键修复能力。 此插件作为Java项目静态代码安全审计工具,侧重于在编码过程中发现项目潜在安全风险

    世界最烂开发项目:苦撑12年,600多万行代码

    “ 你见过最烂项目,撑了多长时间才完蛋?六个月?一年?今天介绍这个奇葩项目,不但一开始就烂得透透,还硬...

    架构实战篇:MyBatis一级、二级,并整合ehcache分布式缓存使用,附演示实例

    ehcache是一个纯Java进程内缓存框架,是一种广泛使用开源Java分布式缓存,具有快速、精干等特点,是Hibernate中默认CacheProvider。

    Spring Cloud 升级路 - 2020.0.x - 2. 使用 Undertow 作为我们 Web 服务容器

    https://juejin.cn/post/6948036822303768590 在我们项目中,我们没有采用默认 Tomcat 容器,而是使用了 UnderTow 作为我们容器。其实性能上

    使用mybatis-generator自动生成代码(附GitHub下载地址)

    大家都知道Mybatis属于半自动ORM,在使用这个框架中,工作量最大就是书写Mapping映射文件,并且手动书写很容易出错,那么今天来介绍一下使用Mybatis-Generator来帮我们自动

    「强烈推荐」这是我看过最接“地气”代码问题与重构实践

    进行了一个概况和整理,主要集中在代码编码问题,抽...

    架构实战篇(十五):Spring Boot 解耦事件驱动

    通过使用spring 事件来解决业务代码耦合

    后端Coder如何做好代码设计?

    来源:http://r6d.cn/C5Ja 说明:生鲜电商属于一个软件产品,那么如何做好代码设计呢?代码设计,是程序员做项目时,在coding之前非常重要一个步骤,可以说关系到整个系统

    Google技术:你不了解Google最新发布JS代码规范 最佳实践

    Google为了那些还不熟悉代码规范人发布了一个JS代码规范。其中列出了编写简洁易懂代码所应该做最佳实践。

    10个最“优秀”代码注释

    致终于来到这里勇敢人。神奇。勿动。

    突发流量引发Dubbo拥堵,该怎么办?

    文章内容结构 第一部分介绍生产上出现Dubbo服务拥堵情况,以及Dubbo官方对于单个长连接使用建议。 第二部分介绍Dubbo在特定配置下通信过程,辅以代码。 第三部分介绍整个调用过程中与性能

    SourceTree里GitFlow使用

    使用,比较担心是管理工作稍微繁琐一点。操作倒不复...

    代码评审流程(摘要)

    代码评审流程(摘要)

    gulp.js 基于流自动化构建工具,对小程序代码进行打包

    gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂配置参数,API也非常简单,学习起来很容易,而且gulpjs使用是nodejs中stream来读取...

    Redis 5.0.11、6.0.11、6.2 发布,修复 32 位系统上整数溢出

    Redis 同时发布了 5.0.11、6.0.11 和 6.2 版本。对于使用 32 位 Redis 用户来说,此次更新解决了一个重要安全问题,即 32 位系统上整数溢出((CVE-2021