POJO类提效工具类Lombok

lombok简介

lombok是是一款工具类,专门使用在POJO类上,简化编写流程。

lombok简单原理

lombok是通过以注解的方式编译时增强POJO类。java代码通过jvm解析器,生成对应的语法树,再通过JRE的注解解析器重新构建语法树,最后生成字节码。

lombok的原理和反射相似,但是lombok是编译时已经完成了,反射是运行的时候才进行,两者性能差异明显。

项目打包时不需要lombok包,因为生成的字节码中已经有lombok注解的功能。

lombok使用

  • 添加maven依赖

provided是指打包时不纳入jar包

<dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
			    <version>1.18.16</version>
          <scope>provided</scope>
</dependency>
  • IDEA还要添加对应的lombok插件

不添加语法编译不通过。

File->Setting->Plugins->搜索Lombok

POJO类提效工具类Lombok_ide

常用注解

  • @Data // 吹爆,好吗 这个直接直接帮我们生成N多个getter和setter,还有默认构造和Object那些方法
  • 作用于类上,是以下注解的集合
    • @ToString
    • @EqualsAndHashCode
    • @Getter
    • @Setter
    • @RequiredArgsConstructor

POJO类提效工具类Lombok_字节码_02

看看多简洁的类,却包含着大大的能量!

POJO类提效工具类Lombok_解析器_03

  • @setter和@getter方法 // 如果你不想像@Data那样暴露的话,可以选择setter和getter的方法,是@Data的子集
  • @Bulider // 还在实例.get 实例.set? 如果工资是以代码行来算的话,当我什么都没说。但是作为一位合格的程序员,代码的优雅是十分必要的,行数得是控制得得当,能用一行写就绝对不用两行。那么这款@Bulider注解就十分适合了。 tips:需要注意一下,@Bulider会屏蔽掉默认构造函数,使用的时候需要斟酌,别盲目使用

POJO类提效工具类Lombok_字节码_04

  • @AllArgsConstructor @NoArgsConstructor, 顾名思义,就不详细解释了。

  • @Log / @Slf4j

作用于类上,生成日志变量, 用于记录日志, 已经在web项目中添加log依赖