在项目开发中,我们时常遇到需要创建实体类,一般的做法是: 先写成员变量, 再提供get()、set()相对应的方法,然后看是否需要提供toString等方法。这样一来会发现每写一个实体类的话就会有很多类似相同的操作,而且代码量看起来也很多,不是很简洁。当然这些实体类我们也可以借助工具一键生成或是干脆直接用注解的形式,只有成员变量,没有get、set相关方法。

今天给大家推荐一个插件Lombok

1. Lombok简介

官方介绍

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, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.

大意是Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不需要为类编写getter或eques方法,同时可以自动化日志变量。

简而来说:Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。

2. Lombok使用

如何在IDEA上进行安装Lombok:

首先点开File下的Settings,然后点Plugins,然后点击下面的Browse repositories,然后在搜索框内搜索lombok, 然后有个install按钮进行安装,安装完后重启下IDEA就好了。

安装好了lombok,我们还需要把lombok依赖到我们项目。

添加maven依赖

org.projectlombok

lombok

1.18.4

provided

下面我们来尝试下,使用lombok注解后,我们的实体类

@Data这个注解是lombok包下的一个注解,而这个注解是用在类上的

@Data

public class User {

private int userId;

private String userName;

}

这个注解其实是帮我们的类提供了get()、set()方法、equals()、hashCode()、toString() 这些方法。也就是说只要你的类上写了这个注解,那就不需要再生成get、set、toString等方法了。类似我们在做Android开发的时候,看到一大堆FindViewById()很繁琐的代码,我们借助ButterKnife插件一样。

常用注解

下面介绍一下常用的几个注解:

@Setter 注解在类或字段,注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法。

@Getter 使用方法同上,区别在于生成的是getter方法。

@ToString 注解在类,添加toString方法。

@EqualsAndHashCode 注解在类,生成hashCode和equals方法。

@NoArgsConstructor 注解在类,生成无参的构造方法。

@RequiredArgsConstructor 注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。

@AllArgsConstructor 注解在类,生成包含类中所有字段的构造方法。

@Data 注解在类,生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。

@Slf4j 注解在类,生成log变量,严格意义来说是常量。private static final Logger log = LoggerFactory.getLogger(UserController.class);

Lombok这个插件,确实工作效率提高了不少。

Lombok的优缺点

优点:

通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,提高了一定的开发效率

让代码变得简洁,不用过多的去关注相应的方法

属性做修改时,也简化了维护为这些属性所生成的getter/setter方法等

对于缺点,官网提到了两点,第一不支持多种参数构造器的重载

第二,虽然省去了手动创建getter/setter方法的麻烦,但大大降低了源代码的可读性和完整性,降低了阅读源代码的舒适度。

对于第二点,我并不怎么认同,实体类的set 和get 可读性并不是很重要,谁又会去关注这些呢?

开源项目github地址:github.com/JourWon/test-lombok

butterknife 插件_知道这个插件,能让你的项目里少写1000行代码相关推荐

  1. js密码强度正则表达式_知道这20个前端正则表达式,能让你做项目时少写1000行甚至一万行

    正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑.熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升. 正则表达式经常被用于 ...

  2. js密码强度正则表达式_这20个正则表达式,能让你少写100行代码

    正则表达式,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑.熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升. 正则表达式经常被用于字段或任意字符串的校验,如下面这段校 ...

  3. c语言1000行代码,【图片】【标题党】论我是如何一分钟写1000行代码的【c语言吧】_百度贴吧...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 # /* BOOST_PP_INC */ # # if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MW ...

  4. java代码自动生成的插件_如何使用插件生成自定义Java 8代码

    java代码自动生成的插件 大多数程序员讨厌的一件事就是编写样板代码. 无休止的时间花费在设置实体类和配置数据库连接上. 为了避免这种情况,您可以让Speedment Open Source之类的程序 ...

  5. lede 插件_【PS插件】神器在手不怕图片模糊

    点击蓝字 关注我们 PS插件是什么??? 插件是一种遵循一定规范的应用程序接口编写出来的程序.很多软件都有插件,ps软件插件有无数种,它可以通过不同的方式改变象素数据,以达到对图象进行抽象.艺术化的特 ...

  6. java自定义maven插件_自定义Maven插件

    第一.自定义Maven插件概述 Mojo:Maven plain Old Java Object.每一个 Mojo 就是 Maven 中的一个执行目标(executable goal),而插件则是对单 ...

  7. 查看文章影响因子的插件_这个浏览器插件可以智能查询SCI论文被引情况

    在查询一篇SCI文章时,我们有时候需要知道他的被引情况,看看有哪些文章引用了它,有时也需要知道施引文献在其文章中是如何描述被引文献的. 查询SCI论文被引情况可以在Web of Science中实现, ...

  8. excel python插件_利用 Python 插件 xlwings 读写 Excel

    Python 通过 xlwings 读取 Excel 数据 去年底公司让我做设备管理,多次委婉拒绝,最终还是做了.其实我比较喜欢技术.做管理后发现现场没有停机率统计,而原始数据有,每次要自己在Exce ...

  9. forge插件_使用Forge插件在现有Java EE项目上启用Arquillian

    forge插件 技术提示#34解释了如何创建可测试的Java EE 7应用程序. 如果要启动新的应用程序,这将很有用. 但是,如果您已经有一个应用程序并启用Arquillian怎么办? 这就是Forg ...

最新文章

  1. hbase 0.96 java api_HBase(九) HBase JAVA API - 运维API
  2. 0717PHP基础:面向对象
  3. 强势的老板--项目管理
  4. pycharm怎么关联python_Python3 安装pylint 及与PyCharm关联
  5. [04-05]box框模型(Box Model)定义了元素框处理元素内容、内边距、边框和外边距的方式...
  6. jQuery formValidator表单验证插件4.1.1提供下载
  7. 使用createObject(createObjectEx)创建silverlight对象
  8. 周末ROS学习沙龙第二期——自定义消息通信、视频传输、人脸检测、小车动手编程
  9. mysql 优化器提示_Mysql查询优化器
  10. java解决中文乱码的几种写法
  11. JS实现2048小游戏
  12. GD32移植FATFS文件系统
  13. 非线性微分方程的线性化
  14. 计算机控制电缆单价,zr-djyvrp3X2X0.5阻燃计算机控制电缆单价
  15. 如何在 iPhone 和 iPad 上将你的照片转换为 PDF?
  16. git revert回滚merge提交时报错(commit xxx is a merge but no -m option )
  17. 3D打印在精密铸造领域应用的优势
  18. 期刊投稿状态_SCI期刊投稿各种状态详解
  19. c/c++中的标识符解析
  20. python 渐变色_python – 用渐变颜色的散景散点图

热门文章

  1. 重磅 | 吴恩达新书《Machine Learning Yearning》1-52 最新章节分享
  2. python 日志不会按照日期分割_python日志切割保留一个月
  3. Qt修炼手册1_溢美之词和Designer设计
  4. JavaScript中判断是否存在某属性
  5. C实现的一个简单的学生成绩管理系统
  6. python之turtle库(画图)
  7. 【CyberSecurityLearning 21】防火墙
  8. OpenGL在frag着色器中模拟手电筒效果
  9. 从spring-session存储结构探讨session存储方案的演变
  10. 解决layui数据表格table固定列行高不一致的情况