在我们 Java 项目里面,有很多 Java Bean 需要为每个属性生成 get/ set 方法,增删改属性都需要维护这些 get/ set 方法甚是麻烦。

今天给大家介绍一款能帮助我们简化这些代码的神器:Lombok!有了这个神器,你的 Java Bean 类的代码量至少可以省一半。

什么是Lombok?

https://www.projectlombok.org/

打开它的官网,这是它的简介。

Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.
Never write another getter or equals method again. Early access to future java features such as val, and much more.

翻译过来就是说,Lombok项目是一个 Java 库,它能够自动嵌入到你的 IDE 编辑器和编译工具中。有了它,你再也不用写 getter 或者 equals 方法了,还有 val 特性等。

总之,有了这个家伙,可以省掉很多代码的编写,大大减少了工作量和维护的难度。

如何使用Lombok?

1、安装插件和配置依赖

如上图所示,Lombok支持所有主流的 IDE 开发工具及编译构建工具。

在 IDEA 中安装 Lombok 插件,这样在使用 Lombok 的时候就不会编译报错。

下面是 Maven 的依赖配置,在用 Maven 打包的时候也能自动生成需要的代码。

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

如果你使用了 Spring Boot,可以不用带版本号,在 Spring Boot spring-boot-dependencies.pom 这个配置文件里面定义了 Lombok 依赖。

所以,你只需要继承版本号即可,当然,有必要的话,你也可以自定义版本号。

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

2、使用注解简化代码

从 IDEA 中的 Lombok 插件特性可以看到支持的注解。

Features
@Getter and @Setter
@FieldNameConstants
@ToString
@EqualsAndHashCode
@AllArgsConstructor, @RequiredArgsConstructor and @NoArgsConstructor
@Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j, @CommonsLog, @JBossLog, @Flogger
@Data
@Builder
@Singular
@Delegate
@Value
@Accessors
@Wither
@SneakyThrows
from Intellij 14.1 @val
from Intellij 15.0.2 @var
from Intellij 14.1 @var
from Intellij 2016.2 @UtilityClass
Lombok config system
Code inspections
Refactoring actions (lombok and delombok)

也可以去 Lombok 对应的包里面看所有支持的注解。

现在挑几个讲一下它们的用法吧!

@Getter 和 @Setter

@Getter
@Setter
public class User {private String name;private int age;...// 无需生成 get/set 方法}

添加 @Getter@Setter 注解用在 Java Bean 类上面,无需生成 get/ set 方法,会自动生成所有的 get/ set 方法及一个默认的构造方法。

也可以用插件来添加相应的注解。

来看下源码和生成后的代码对比。

@Getter@Setter 注解也可以单独使用在字段上面,同样也会生成对应的 get/ set 方法及一个默认的构造方法。

@ToString

使用在类上,默认生成所有非静态字段以下面的格式输出,如:

public String toString(){return "Person(userName=" + getUserName() + ", id=" + getId() + ", age=" + getAge() + ", address=" + getAddress() + ", memo=" + getMemo() + ")";
}

里面也有很多参数,用来自定义输出格式。

@NoArgsConstructor

用在类上,用来生成一个默认的无参构造方法。

@RequiredArgsConstructor

用在类上,使用类中所有带有 @NonNull 注解和 final 类型的字段生成对应的构造方法。

@AllArgsConstructor

用在类上,生成一个所有参数的构造方法,默认不提供无参构造方法。

@Data

用在类上,等同于下面这几个注解合集。

  • @Getter
  • @Setter
  • @RequiredArgsConstructor
  • @ToString
  • @EqualsAndHashCode

@Value

用在类上,等同于下面这几个注解合集。

  • @Getter
  • @FieldDefaults(makeFinal=true, level=AccessLevel.PRIVATE)
  • @AllArgsConstructor
  • @ToString @EqualsAndHashCode}

@NonNull

用在属性上,用于字段的非空检查,如果传入到 set 方法中的值为空,则抛出空指针异常,该注解也会生成一个默认的构造方法。

还有很多,这里不再撰述。

总结

本文介绍了 Lombok 及使用说明,更多的注解使用方式可以去源码里面看吧,有了这个插件,可以帮助你写出更简洁、更优雅、更漂亮的 Java 代码。

更多好工具分享请关注微信公众号:Java技术栈,在后台回复关键字:工具,可以获取获取栈长整理的更多工具类干货。

本文原创首发于微信公众号:Java技术栈(id:javastack),关注公众号在后台回复 "工具" 可获取更多,转载请原样保留本信息。

推荐一款代码神器,代码量至少省一半! 1相关推荐

  1. 推荐几款图形转代码的工具

    推荐几款图形转代码的工具 2014年08月01日 标签:Geek 昨天,本来想找一款根据字符自动排列图片形状的插件.结果没有找到,反而有意外的收获.分享分享 1. 照片生成代码 链接:http://w ...

  2. 推荐8款堪称神器的良心软件

    工欲善其事必先利其器,推荐8款堪称神器的良心软件,每一款都是精品,可以大幅提高电脑的使用体验,解决超多难题.喜欢的话记得点赞和关注哦~ 1.uTools uTools是一款快速搜索工具 ,跨平台支持W ...

  3. 良心推荐十款堪称神器的软件

    良心推荐十款堪称神器的软件 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: 1.简道云,快速零编码开发平台.即使不懂技术,不懂编程,也可以利用拖拽式操作迅速 ...

  4. 推荐一款代码神器,代码量至少省一半!

    在我们 Java 项目里面,有很多 Java Bean 需要为每个属性生成 get/ set 方法,增删改属性都需要维护这些 get/ set 方法甚是麻烦. 今天给大家介绍一款能帮助我们简化这些代码 ...

  5. 推荐一款 IDEA 神器 ,人工智能帮你写代码,再也不用加班了!!

    今天栈长给大家推荐一款代码神器,人工智能帮你写代码,简直爽的不行,关键还是免费的,一起来看看. 简介 Codota 是一款优秀的 AI 代码自动完成工具,可以帮助我们极大的提高开发效率. 官网:htt ...

  6. 黑科技:进阶必备,推荐两款自动生成代码神器

    关注上方"测试开发技术",选择星标, 干货技术,第一时间送达! 最近两年,在互联网行业各大技术峰会上,都能看到关于工程效能这个概念,从侧面也反映出了研发效能已经逐渐被各企业所重视! ...

  7. 推荐一款截图神器——FSCapture

    FSCapture FSCapture是一款抓屏工具,体积小巧.功能强大,不但具有常规截图等功能,更有从扫描器获取图像,和将图像转换为 PDF文档等功能.还有图片编辑,屏幕录像,编辑视频等强大的功能. ...

  8. 推荐一款绘图神器visual-paradigm

    最近发现了一款绘图神器,visual-paradigm一套强大的在线工具,可以推动您的业务增长并改善项目成果.绘制图表/信息图/流程图等,制作客户旅程地图,建立在线表单和问卷调查. https://o ...

  9. 推荐一款作图神器:ProcessOn

    本人近日发现一款作图神器:ProcessOn 它是一款在线的作图工具,完全国产,前台是用HTML5  Canvas加javascript做绘图,后台用java实现数据处理和图片生成, 整站UI基本类似 ...

最新文章

  1. Titanium开发环境搭建第一个坑
  2. .NET 分布式架构开发实战之二 草稿设计
  3. CodeForces - 1284B New Year and Ascent Sequence(乱搞)
  4. Jquery ajax提交表单几种方法详解
  5. 线程事件--day36
  6. 在使用 ADO.NET 导出 Excel 文件时,设置 IMEX=1 仍不能导出所有数据的解决办法
  7. 264. 丑数 II---LeetCode---JAVA(动态规划)
  8. gulpfile php,Laravel利用gulp如何构建前端资源详解
  9. python字符串常量有什么区别_Python经典面试题:is与==的区别
  10. Visual Studio二次安装时无法更改安装位置解决方案
  11. AndroidStudio安卓原生开发_SwipeRefreshLayout_下拉刷新控件---Android原生开发工作笔记119
  12. babel-preset-env使用介绍
  13. 使用frp通过ssh访问公司内网机器
  14. Oracle 闪回特性(Flashback Query、Flashback Table)
  15. 超全NetLogo多主体仿真建模(小世界WWW+无标度网络+随机网)内含源码+界面设计+程序分析
  16. java8使用Comparator.comparing进行排序
  17. poj3349——Snowflake Snow Snowflakes
  18. case when then else end 语句遇上sum或count等统计函数的注意事项(列转行)
  19. 宏康 HY17 时钟 串口
  20. 手机安装Linus系统

热门文章

  1. python模拟多线程http请求_用python实现自己的http服务器——多进程、多线程、协程、单进程非堵塞版、epoll版...
  2. centos安装python_python3.10 如何下载安装?
  3. c语言子线程给主线程发信息,如何用C语言实现多线程
  4. 10_python基础—数据序列(推导式)
  5. Oracle数据库exp和imp方式导数据
  6. webpack打包流程_了不起的 Webpack 构建流程学习指南
  7. php curl https_PHP FFI:一种全新的PHP扩展方式
  8. Oracle/PLSQL While Loop
  9. 大数据学习笔记:利用JAVA项目操作HBase
  10. 安卓学习笔记29:使用SQLite数据库