目录
4.2 @EqualsAndHashCode(of="id")与ToString(exclude = "updateTime")
第一章 Lombok介绍与原理
介绍:Lombok是通过简单注解来精简代码达到消除冗长代码的目的,可以避免修改字段名字时忘记修改方法名.
原理:
首先通过javac将源代码分析生成一棵抽象语法树AST,然后调用Lombok Annotation Processor,处理器对刚刚生成的AST进行处理,其调用Lombok Annotation Handler,其找到我们的注解(如@data)所在的类对应的语法树,接着修改该语法树,增加get,set节点.最后Lombok Annotation Processor输出一个修改过的抽象语法树,我们将拿到语法树进行解析和生成,就变成了我们的字节码文件.
第二章 Lombok引入项目
2.1 pom.xml中引入Lombok
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
2.2 在IDEA中安装Lombok
打开File->Settings搜索Lombok点击install,安装后重启即可.
第三章 Lombok使用介绍
3.1 概要讲解
@Data:加在类上,为类提供读写属性, 此外还提供了 equals()、hashCode()、toString() 方法
@Getter:自动生成get方法,
@Getter(AccessLevel.PROTECTED):生成的get方法是protected
@Setter:自动生成set方法,
@Setter(AccessLevel.PROTECTED):生成的set方法是protected
@NoArgsConstructor:类的无参构造器
@AllArgsConstructor:生成所有参数的构造器
@ToString:将类的所有属性进行ToString
@ToString(exclude="column"):将类的除去column属性进行ToString
@EqualsAndHashCode:类的Equals与HashCode方法将被自动重写.
@EqualsAndHashCode(exclude="column"):排除某几个属性其它的被自动重写
@Slf4j:logback日志框架:可以直接通过log调用Logger
@Log4j:当项目使用log4j日志框架时使用.
3.2 细化讲解
这里面只是举了ToString的例子,EqualsAndHashCode同理.exclude上面讲了是排除,写两个就是排除两个,of是只要指定字段.
@Data其实包含@Getter,@Setter,@ToString,@EqualsAndHashCode,不包含全参与无参构造.并且默认是所有字段,并且在使用@EqualsAndHashCode会显式增加一个protected权限的canEqual方法,里面通过instance of进行返回判断,返回值是一个布尔.
3.3 注意事项
第四章 实例
下面将注解后增加的代码进行展示(通过反编译来的)
4.1 @Data
get,set进行省略
4.2 @EqualsAndHashCode(of="id")与ToString(exclude = "updateTime")
equals中只用了id:
toString中也没有updateTime
4.3 @Slf4j