Lombok快速入门
Lombok介绍以及优点
龙目岛名称由来
龙目岛 Lombok 印度尼西亚西努沙登加拉(Nusa Tenggara Barat)省岛屿,小巽他群岛之一。西隔龙目海峡面对巴厘岛,东隔阿拉斯(Alas)海峡面松巴哇(Sumbawa)岛,北濒爪哇海,南临印度洋。面积5435平方千米
作用:通过简单的注解来精简代码来达到消除冗长代码的目的
Lombok的优点
-
提高编码效率
-
让代码更简洁
-
消除冗长代码
-
避免修改字段名字时忘记修改方法名
- 防止序列化的时候因为改了方法名导致序列化异常或者不符合预期
-
学习如果不是为了装逼,那么动力会小很多
注意: idea上必须支持Lombok,不然会报错;如果安装了lombok插件,但是编译的时候还是找不到log,检查Annotation Processors -> Enable annotation processing 是否勾选
lombok原理
JSR 269 Pluggable Annotation Processing API
- javac 从Java6开始支持
JSR 269 API
规范 - 只要程序实现了该api,就能在javac运行的时候得到调用
- 编译时生效
- Lombok实现了JSR 269 API ,在编译时javac 编译源码的具体流程如下
Lombok引入项目
- maven引入Lombok
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<!--这一句可以加 也可以不加,加了达成jar包或者war包的时候不会打入包中-->
<scope>provided</scope>
</dependency>
- 在官网
Install>BuildTools>maven
可以拿到依赖的配置,在中央仓库也可以获取
idea/eclipse安装lombok插件
- idea安装之后重启即可
eclipse安装lombok插件
-
下载 lombok.jar
-
双击运行lombok.jar或者
sudo java -jar lombok.jar
- 需要保证所执行的用户拥有权限
-
如图安装
-
权限问题
-
mac/linux 可能遇到这个问题
- Windows如果遇到权限问题,选择管理员权限运行即可
- 重启安装程序进行安装
lombok实战
- @Data 加在类上
- @Get 自动生成get/set方法
- @Get(AccessLevel.PROTECTED) 生成对应关键词修饰的get/set
- @Set 自动生成get/set方法
- @Set(AccessLevel.PROTECTED) 生成对应关键词修饰的get/set
- @NoArgsConstructor 生成无参数构造器
- @AllArgsConstructor 生成全部参数构造器
- @ToString 将当前全部的属性生成toString方法(重写toString)
- @ToString(exclude = "column") 将当前除了column的属性的其他属性生成toString方法(重写toString)
- @EqualAndHashCode 将类的equal和hashcode方法重写
- @EqualAndHashCode(exclude = "column")将类的属性除了"column"的其他属性生成equal和hashcode,
- @Slf4j 和logback配合使用,使用这个注解之后。可以不用声明logback,直接使用
- @Log4j 和Log4j日志框架配合使用,使用这个注解之后。可以不用声明Log4j,直接使用
排除与包含一个或者多个属性的注意点
- @ToString(exclude = "column") 排除一个字段
- @ToString(exclude = {"column1","column2"}) 排除多个字段
- @ToString(of = "column2") 只包含一个字段
- @ToString(of = {"column1","column2"}) 包含多个字段
- EqualsAndHashCode 同上
注意@Data
- @Data包含了以下注解,但是不包含全参数构造器和无参数构造器
- @Get和@Set
- @ToString以及@EqualsAndHashCode
反编译
Java DeCompiler
Java反编译- 官网 现已经无效 Java DeCompiler
- JD-GUI 图形化界面工具
- JD-eclipse eclipse插件
- JD-IntelliJ idea插件
一般的,开源软件可以直接通过maven下载源码进行查看,否则可能需要反编译工具进行查看
- Lombok验证
- 通过JavaDecompiler验证class文件
lombok实际使用的注意点
-
在类需要序列化反序列化详细控制字段的时候
- 例如Jackson json序列化 ,当字段为null,则不序列化,会有点坑
-
使用lombok虽然能够省去手动创建getter/setter方法等繁琐固定的代码,但是却降低了源代码文件的可读性和完整性,降低了阅读代码的舒适度
-
使用@Slf4j还是@Log4j取决于项目使用的日志框架
-
选择适合的地方使用lombok,例如pojo是一个比较好的地方,pojo比较单纯
小确幸
每一丝灵感都值得被记录,每一笔记录都是成长,每一点成长都值得欢呼
博主个人站: www.imisty.cn
CSDN博客: https://blog.csdn.net/lookinthefog
博客园 :https://imist.cnblogs.com/
希望能够认识一些热爱技术的小伙伴,欢迎友链接哟