lambok会通过简单注解来精简代码达到消除冗长代码的目的。
优点:
*提高编码效率
*使代码更简洁
*消除冗长代码
*避免修改字段名字时忘记修改方法名
原理:
*使用JSR269 pluggable Annotation Processing Api
*javac从java6开始支持“JSR 269 API”规范
编译时,javac编译源码的具体流程如下:
javac将源代码分析生成抽象语法树AST,lombok注解处理器对抽象语法树进行处理,lombok解析handler输出修改后的AST,javac将修改后的AST解析和生成,生成字节码文件。
lambok的注解
@Data (包括@Getter、@Setter、@ToString、@EqualsAndHashCode)
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
@EqualsAndHashCode
@Slf4j logback日志框架时使用
@Log4j Log4j日志框架时使用
注解的包括或排除一个或多个属性
@ToString(exclude="")
@ToString(exclude={"",""})
@ToString(of="")
@ToString(of={"",""})
lambok的坑
在类需要序列化、反序列化时详细控制字段时,如Jackson json序列化时,用lambok会引发问题。
maven项目引入lambok:
<dependency>
<groupId>org.projectlombok
<artifactId>lombok
<version>1.16.18
</dependency>