由于编码过程中,以上都是一些重复动作,模板代码。每次都手动生成既浪费时间,又增加了大量的冗余代码。我们可以使用lombok插件来解决这个问题。使我们的编码效率得到大幅度的提高!
一、安装 lombok
maven仓库官方地址: Maven Repository: Search/Browse/Explore (mvnrepository.com)
以InelliJ IDEA为例,先要安装lombok插件,然以再引入依赖:
dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
SpringBoot项目里不需要加入版本号,springBoot父项目会代为管理。如果是其他项目请自行添加版本号!
二、使用lombok
应用:
- @Data:根据成员变量生成get和set方法,@Data注解,将为我们在编译期自动生成:成员变量的get和set方法;equals方法;canEqual方法;hashCode方法;toString方法。
- @AllArgsConstructor:根据成员变量生成类的构造函数,@AllArgsConstructor注解将为我们在编译期自动生成:全参构造函数,有全参构造函数注解,自然就有无参构造函数注解:NoArgsConstructor注解。
- 重写toString()和hashCode方法。
- @Slf4j 注解 : 引入日志框架logFactory,用来打印日志。
-
@Builder注解。在Java类上使用Builder注解之后,我们可以使用如下代码为对象属性赋值。
LombokPOJO lombokPOJO = LombokPOJO.builder() .name("xiaobai") .age(3) .build();
上图左侧是使用lombok注解Data,右侧是java字节码class文件反编译结果。
三、lombok优点和缺点
优点:
①、减少了样板代码:Lombok通过注解自动生成常见的Java类方法(如getter、setter、构造函数等),从而减少了编写样板代码的工作量。这可以提高开发效率,使代码更加简洁易读。
②、简化了数据对象的创建:使用@Data注解可以自动生成所有字段的getter和setter方法,并且还可以生成equals、hashCode和toString方法。这样,创建和维护数据对象变得更加容易。
③、支持链式调用:使用@Builder注解可以生成一个建造者模式的构造器,可以通过链式调用设置对象的属性。这种方式可以提高代码的可读性和可维护性。
缺点:
①、有侵入性 ;②、对高版本的JDK不兼容。
"Lombok显示出有入侵性"通常指的是Lombok在代码中产生的一种依赖关系。具体来说,当使用Lombok注解时,编译器会将这些注解解析为相应的代码,并插入到生成的字节码中。这就导致了对于使用Lombok的项目来说,Lombok成为了一个必要的构建依赖项。
这种依赖关系有时被认为是"入侵性"的,原因如下:
- 版本兼容性:Lombok与IDE或构建工具之间可能存在版本兼容性问题。如果IDE或构建工具没有正确支持或配置Lombok,可能会导致编译错误或其他问题。
- 项目可移植性:由于使用了Lombok的注解,项目变得依赖于Lombok库。这意味着如果将项目迁移到不支持Lombok的环境中,代码可能无法正常编译和工作。
- 阅读和理解代码的难度:由于Lombok自动生成了代码,源代码中实际执行的操作可能会被隐藏。这可能会导致阅读和理解代码的困难,特别是对不熟悉Lombok的开发人员来说。
尽管Lombok有一些潜在的入侵性问题,但它仍然是广泛使用的Java开发工具,可以显著减少代码量并提高开发效率。在决定使用Lombok时,开发团队应该权衡其带来的便利性和潜在的风险,并确保正确配置和管理Lombok依赖。