lombok的使用

lombok概述

  • lombok简介

    Lombok想要解决了的是在咱们实体Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不会用到,可是某些时候仍然须要复写,以期方便使用的方法;在使用Lombok以后,将由其来自动帮你实现代码生成,注意,其是 在运行过程当中,帮你自动生成的 。就是说,将极大减小你的代码总量。
  • lombok做用

    消除模板代码

    getter、setter、构造器、toString()、equals()

    便捷的生成比较复杂的代码,例如一个POJO要转化成构建器模式的形式,只须要一个注解。spring

    SpringBoot中使用lombok

  1. 添加依赖
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.10</version> </dependency>
  1. 编写一个实体类 User,使用@Data注解
@Data public class User { private String name; private int age; }
  1. 编写测试方法,测试@Data的做用
@Test
public void testUser(){  
  User user = new User(); user.setName("AnyCode"); user.setAge(20); System.err.println(user.toString()); }

输入图片说明

lombok的注解介绍

@NonNull : 让你不在担心而且爱上NullPointerException

@CleanUp : 自动资源管理:不用再在finally中添加资源的close方法

@Setter/@Getter : 自动生成set和get方法

@ToString : 自动生成toString方法

@EqualsAndHashcode : 从对象的字段中生成hashCode和equals的实现

@NoArgsConstructor/@RequiredArgsConstructor/@AllArgsConstructor
自动生成构造方法

@Data : 自动生成set/get方法,toString方法,equals方法,hashCode方法,不带参数的构造方法

@Value : 用于注解final类

@Builder : 产生复杂的构建器api类

@SneakyThrows : 异常处理(谨慎使用)

@Synchronized : 同步方法安全的转化

@Getter(lazy=true) :

@Log : 支持各类logger对象,使用时用对应的注解,如:@Log4jdocker

@Slf4j:同上api

推荐使用技巧

  • 在 Bean / Entity 类上使用 @Data 注解。
  • 须要使用 Log 对象的地方使用 @Log4j(依项目日志框架决定)。
  • 注意:lombok 的注解不能被继承。安全

    IDEA中使用lombok

    若是想让lombok生效咱们还须要针对idea工具进行插件的安装,下面咱们按照顺序打开Idea配置

    File > Settings > Plugins > Browse repositories... > 输入lombok,插件就会被自动检索出来,以下图所示:
    输入图片说明

    个人工具已经安装了该插件,全部在右侧是没有任何按钮的,若是你的工具没有安装该插件,

    右侧会有一个绿色的按钮,按钮的内容则是Install,点击安装后重启Idea就能够了。springboot

    lombok经常使用注解详解

  • @EqualsAndHashCode,@ToString :告诉Lombok来生成 equals, hashCode方法,toString方法

    在生成这些方法的时候lombok会使用全部的成员变量。
  • ** @AllArgsConstructor** :会自动建立一个包括全部成员的构造器。
  • @Getter/@Setter: 注解会为每个标记的成员变量自动生成对应的方法。
  • 用例
package com.jxlg.lance.springbootcorestudy.lombok; import lombok.*; /** * @author lance(ZYH) * @function 测试其余注解 * @date 2018-03-22 12:27 */ @EqualsAndHashCode @ToString @AllArgsConstructor public class Student { @Setter @Getter private String stuName; @Setter @Getter private Integer stuAge; @Setter @Getter private String stuClass; @Setter @Getter private Integer stuNumber; }
  • 若是你不想将注解用在所有的成员变量上,而是仅仅部分变量上,那么你能够提供一个指定的哪个成员变量须要

    自动生成方法的变量。举例: 好比在这里,咱们只想让stuName,stuAge两个成员变量出如今 toString 方法里。
@EqualsAndHashCode @ToString(of = {"stuName","stuAge"}) @AllArgsConstructor public class Student { @Setter @Getter private String stuName; @Setter @Getter private Integer stuAge; @Setter @Getter private String stuClass; @Setter @Getter private Integer stuNumber; }
  • 这些代码已经比咱们一开始要好太多了,可是它任然不够简洁。这里重复了大量的 @Getter 和 @Setter 注解。

    若是你只是须要在Class中仅暴露几个字段,那么使用它们很是方便,但若是您须要为全部字段生成访问器,则会变得烦人又无聊。

    为了使代码更加简洁, Lombok永续咱们在类级上使用这些注解。若是这些注解放在类名之上,

    那么lombok会自动为咱们生成全部字段的访问方法。
@EqualsAndHashCode @ToString @AllArgsConstructor @Setter @Getter public class Student { private String stuName; private Integer stuAge; private String stuClass; private Integer stuNumber; }
  • @Buidler :实例化这个类
  • 用例
@EqualsAndHashCode @ToString @AllArgsConstructor @Setter @Getter @Builder public class Student { private String stuName; private Integer stuAge; private String stuClass; private Integer stuNumber; } 测试类: package com.jxlg.lance.springbootcorestudy.lombok; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import static org.junit.Assert.*; @RunWith(JUnit4.class) public class StudentTest { @Test public void test(){ Student student = Student.builder() .stuName("张三") .stuAge(12) .stuClass("高三") .stuNumber(12222) .build(); System.out.println(student); } } 结果: Student(stuName=张三, stuAge=12, stuClass=高三, stuNumber=12222)
  • @Data :简单的来讲全部全部的注解咱们均可以使用一个注解完成.也就是@Data

    咱们在定义类的时候 只须要加一个 @Data 注解,其余的注解咱们都不须要在添加就能够达到前面所说的全部功能。
  • 经过上面介绍的,咱们日常使用Lombok只须要这样就是就能够了,以下:
@Data @Builder public class User { private String name; private Integer age
相关文章
相关标签/搜索