lombok应用
概念
lombok:lombok是一款Java开发插件,可以通过它定义的注解来精简冗长和繁琐的代码,主要针对简单的Java模型对象(POJO)。
好处
- 节省大量重复工作
- Lombok针对这些内容的处理是在编译期,而不是通过反射机制,这样的好处是并不会降低系统的性能。
- RetentionPolicy.SOURCE
lombok使用步骤
-
在IDEA中安装lombok插件
-
添加lombok的maven坐标
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> <scope>provided</scope> </dependency>
-
改造实体类。使用lombok注解精简代码
@NoArgsConstructor @AllArgsConstructor @Data public class User { private Long id; private String userName; private String age; private String address; }
lombok注解说明
注解名称 | 注解位置 | 注解作用 |
---|---|---|
@Data | 类 | 自动提供getter、setter、hashCode、equals、toString等方法 |
@Getter | 类、成员变量 | 自动提供getter方法 |
@Setter | 类、成员变量 | 自动提供setter方法 |
@Slf4j | 类 | 自动在bean中提供log变量,其实用的是slf4j的日志功能 |
@Log4j | 类 | 为该类提供一个属性名为log的log4j日志对象。 |
@AllArgsConstructor | 类 | 为该类提供一个包含全部参的构造方法,注意此时默认构造方法不会提供。 |
@NoArgsConstructor | 类 | 提供一个无参的构造方法。可以和@AllArgsConstructor同时使用 |
@EqualsAndHashCode | 类 | 生成equals、canEqual、hashCode方法。 |
@ToString | 类 | 生成包含所有参数的toString方法。 |
注:
- 需要特定的getter和setter方法时,可以自己重写该方法
- @Slf4j和@Log4j:在需要打印日志的类中使用,当项目中使用了slf4j打印日志框架时使用该注解,会简化日志的打印流程,只需调用info方法即可;
lombok深入理解
lombok实现流程:首先是项目的源代码文件,在经过编译处理以后,lombok会使用自己的抽象语法树去进行注解的匹配,如果在项目中的某一个类中使用了lombok中的注解,那么注解编译器就会自动去匹配项目中的注解对应到在lombok语法树中的注解文件,并经过自动编译匹配来生成对应类中的getter或者setter方法,达到简化代码的目的。执行顺序就如上图的叠放顺序。