Lombok
简介
Lombok是一款java开发插件,使java开发者可以通过其定义的一些注解来消除业务工程中冗长和繁琐的代码,尤其对于简单的Java模型对象(POJO).在开发环境使用Lombok插件后,Java开发人员可以节省出重复构建,像hashCode和equals这样的方法以及各种业务对象模型的accessor和ToString等方法的大量时间。Lombok能够在编译源代码期间自动帮我们生成这些方法,并没有如反射那样降低程序性能
IDEA安装Lombok
File—>Settings—>Plugins 搜索Lombok ,点击Install,下来重启IDEA ,如下图
使用Lombok注解时需要先引入lombok.jar
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
点击View–>Tool Windows–>Structure,便可以看到类中所有的方法了,这些方法都是lombok自动生成的,效果如下:
Lombok常用注解
- @NonNull 用在方法参数前,自动对参数进行非空校验,为空抛出空指针异常
- @Cleanup 自动管理资源,用在局部变量之前,在当前变量范围内即将执行完毕退出前回清理资源,生成try-finally代码关闭流
- @Getter/@Setter 用在属性上,不用再写setter和getter方法,还可以指定访问范围
- @ToString 用在类上,自动重写toString方法
- @EqualsAndHashCode 用在类上,自动生成equals方法和hashCode方法
- @NoArgsConstructor @RequiredArgsConstructor @AllArgsConstructor 用在类上,自动生成无参构造和使用所有参数的构造方法
- @Data 用在类上,相当于使用@ToString @EqualsAndHashCode @Getter @Setter@RequiredArgsConstructor这些注解
- @Value 用在类上,是@Data的不可变形式,相当于为属性添加final声明,只提供getter方法,不提供setter方法
- SneakyThrows 自动抛异常,无需显式在方法使用throws语句
- Synchronized 用在方法,将方法声明为同步,并自动加锁
- Getter(lazy=true) 懒加载,用到时再加载
Lombok优缺点
优点:
- 通过注解生成常用方法,提高开发效率
- 让代码更整洁,不用过多去关注相应方法
- 属性修改时,也省去修改getter、setter等方法
缺点:
-
不支持多种参数构造方法
-
虽省去一些方法,但是大大降低源代码可读性和完整性,降低了阅读源代码的舒适度