且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

MyBaits学习笔记--注解开发以及Lombok使用(“最全MyBatis学习”)(下)

更新时间:2022-02-25 05:26:07

九、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.


Project Lombok 是一个 Java 库,可自动插入您的编辑器并构建工具,为您的 Java 增添趣味。


永远不要再编写另一个 getter 或 equals 方法,通过一个注释,您的类就有一个功能齐全的构建器,自动化您的日志变量等等。


Lombok是一款Java开发插件,使得Java开发者可以通过其定义的一些注解来消除业务工程中冗长和繁琐的代码,尤其对于简单的Java模型对象(POJO)。在开发环境中使用Lombok插件后,Java开发人员可以节省出重复构建,诸如hashCode和equals这样的方法以及各种业务对象模型的accessor和ToString等方法的大量时间。对于这些方法,它能够在编译源代码期间自动帮我们生成这些方法,并没有如反射那样降低程序的性能。


使用步骤:


  1. 在IDEA中安装Lombok,安装后重启

MyBaits学习笔记--注解开发以及Lombok使用(“最全MyBatis学习”)(下)


2.在项目中导入Lombok的jar包


<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.20</version>
    <scope>provided</scope>
</dependency>

3.在实体类上注解

@Getter and @Setter
@FieldNameConstants
@ToString
@EqualsAndHashCode
@AllArgsConstructor, @RequiredArgsConstructor and @NoArgsConstructor
@Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j, @CommonsLog, @JBossLog, @Flogger, @CustomLog
@Data
@Builder
@SuperBuilder
@Singular
@Delegate
@Value
@Accessors
@Wither
@With
@SneakyThrows
@val
@var
experimental @var
@UtilityClass

再也不用去手写,直接加个注解就可以。


说明:

@Data:无参构造,get、set、toString、hashcode、equals
@AllArgsConstructor:有参构造。这里有了有参构造,无参构造就没有,所以还需要加一个无参构造
@NoArgsConstructor:无参构造。可以注解加也可以在里面加方法

MyBaits学习笔记--注解开发以及Lombok使用(“最全MyBatis学习”)(下)

MyBaits学习笔记--注解开发以及Lombok使用(“最全MyBatis学习”)(下)


优缺点


优点:


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


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


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


缺点:


  • 不支持多种参数构造器的重载


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


总结

Lombok虽然有很多优点,但是它跟类似于一中IDEA插件,项目也需要依赖相应的jar包。Lombok依赖jar包是因为编译时要用它的注解。为什么说它又类似插件?因为在使用时,eclipse和IDEA都需要安装相应的插件,在编译器编译时通过操作AST(抽象语法树)改变字节码生成,变相的就是说它在改变java语法。


它不像spring的依赖注入,或者mybatis的ORM一样是运行时的特性,而是编译时的特性。


按需使用