最初学习java时候,手写一个个的pojo类及其getter、setter、toString。。。逐渐的熟练之后感觉这样的方式很机械,于是发现各大IDE就提供了快捷键创建这些内容(idea的ALT+INS、MyEclipse的ALT+Shift+s),从这时候开始逐渐深感IDE之便捷;但是在不断地学习生活中开始厌倦这种存在“居然要按下三四次快捷键才能生产代码!每当类中属性发生变化时还要手动去修改对应方法!”等等“不便”因素的笨重方法,于是Lombok就诞生了。
正文
Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类。
Lombok提供了很多注解,帮我们省去了很多代码量(例如getter、setter。。。)同时可以自动化日志变量。官网链接
简而言之:Lombok是能以简单的注解形式来简化java代码,提高开发人员的开发效率的语法糖!
怎么使用lombok?
首先安装lombok plugin:
设置enable注解处理器,否则编译时可能出错:
](https://imgchr.com/i/MrCt9f)
项目中添加依赖,maven项目为例:
1 | <dependency> |
Lombok主要注解
@Getter and @Setter
/ 自动为属性提供 Set和Get 方法@ToString
/ 该注解的作用是为类自动生成toString()方法@EqualsAndHashCode
/ 为对象字段自动生成hashCode和equals实现@RequiredArgsConstructor
/ 注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。@AllArgsConstructor, @RequiredArgsConstructor and @NoArgsConstructor
/ 顾名思义,为类自动生成对应参数的constructor@Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j, @CommonsLog, @JBossLog
/ 自动为类添加对应的log支持@Data
/ 自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter,为非final字段添加@Setter,和@RequiredArgsConstructor,本质上相当于几个注解的综合效果@NonNull
/ 自动帮助我们避免空指针。作用在方法参数上的注解,用于自动生成空值参数检查@Cleanup
/ 自动帮我们调用close()方法。作用在局部变量上,在作用域结束时会自动调用close方法释放资源
这些注解都有一些可选参数,都比较简单易懂,就不记录了
举例:
最常见常用的就是实体类的创建了,大量没有特殊需求的Getter、Setter方法如果堆积在代码中实在是臃肿:
从方法视图可以看到,与注解对应的方法已经存在了,根据属性的修改变化,方法也会自动做出调整。
还有另一大应用场景,就是可以注解生成日志:
1 |
|
优缺点:
优点:
- 能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,提高了一定的开发效率。
- 让代码变得简洁,不用过多的去关注相应的方法。
- 属性做修改时,也简化了维护为这些属性所生成的getter/setter方法等。
缺点:
- 不支持多种参数构造器的重载。
- 虽然省去了手动创建getter/setter方法的麻烦,但大大降低了源代码的可读性和完整性,降低了阅读源代码的舒适度。有时可以通过给getter/setter加一点点业务代码,能极大的简化某些业务场景的代码。
- 要依赖插件的支持,最不能忍受的!!!
Lombok有它的得天独厚的优点,也有它避之不及的缺点,熟知其优缺点,在实战中灵活运用才是王道。任何技术的学习和使用都要讲求一个灵活运用!
Lombok的功能还有很多很多,博主浅尝辄止,但是在后续的学习中还会不断地完善和熟练对其的使用。