开发环境 / 开发插件 Java代码简洁开发之Lombok插件 2021-04-30 [TOC] # Lombok学习 ## 一、简介 ### 1.干什么用? - 简化POJO类的书写(getter、setter、toString、equals、hascode以及构造方法) ![](/uploads/1/image/public/202104/20210430181611_jh2nfeyo39.png) - 各类POJO的实际应用 ![](/uploads/1/image/public/202104/20210430181705_dxs1nvpt4x.png) ## 二、IDEA中如何配置 ### 1.引入lombok的Jar包 ```xml <!-- lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> </dependency> ``` ### 2.设置IDEA,启用自动注解解析器 File(文件)---setting(设置)---Build,Execution,Deployment(构建,执行,部署)----Compiler(编译器)---Annotation Processors(注解处理器)----勾选enable annotation processing(启用注解处理) ### 3. 安装Lombok插件 ![](/uploads/1/image/public/202104/20210430181754_uf68itfc56.png) 安装并重启IDEA。 ## 三、使用Lombok注解 ### 1、属性类注解 - ①@Getter注解:为属性添加getter方法 - ②@Setter注解:为属性添加setter方法 > 注:当@Getter、@Setter注解在类上时,其某个属性不想生成getter、setter,则可以通过value = AccessLevel.NONE控制,当类中已经手写了getter、setter方法,则手写的优先级高于生成的(不会生成)。 - ③@Data注解:为属性添加getter方法、setter方法、构造方法只对未初始化的final属性或@NonNull注解属性有效(否则创建空构造方法)、生成equals、canEqual、hashCode、toString方法 ### 2.构造函数类注解(final属性只能在定义时初始化或者构造函数中初始化 ) - ①@NoArgsConstructor注解:添加一个无参构造方法 * ②@AllArgsConstructor:添加一个全部未初始化参数的构造方法,通过access来设置构造方法的访问级别 * ③@RequiredArgsConstructor:与final和@NonNull注解结合使用 - 当类中不存在final和@NonNull注解属性时,则默认生成一个空的构造函数 - 当类中存在未初始化的final属性或@NonNull注解属性,则生成一个包含全部未初始化的final属性和@NonNull注解属性参数的构造方法(不会生成空的构造方法) > 注意当和@NoArgsConstructor注解同时使用时,@NoArgsConstructor注解要求final属性必须初始化而@NonNull注解属性不用必须初始化,因此这种情况下该注解只会成一个包含全部未初始化的@NonNull注解属性参数的构造方法 ### 3.验证类注解 - ①@NonNull注解:在给属性生成set方法及作为入参的构造方法时,会验证该属性值是否为null,为null则报错 * ②@Accesssors设置chain=true,实体支持链式编程,即对象实例.set属性(XXX).set属性(XXX).set属性(XXX);设置fluent = true,实体支持”属性名编程“即对象实例.属性(XXX)同时支持链式编程即对象实例.属性(XXX).属性(XXX); > 注:二者同时设置为true时,fluent的级别大于chain * ③@Builder注解:建造者设计模式,通过”对象.对象Builder t = 对象.builder()“实例化; * ④@Log或@Slf4j注解:获取当前类实例的日志对象实例:log