![712401c3b03d3d71c7daa6601898a42a.png](https://i-blog.csdnimg.cn/blog_migrate/20775fa1c3118d40f8ad2a5973c0c879.jpeg)
Lombok 可以通过简单的注解来简化 Java 代码,提高开发效率
相关知识
Lombok官网:https://projectlombok.org/
常用注解
- @Setter | @Getter
提供无参构造方法以及 getter、setter 方法
![7ff2576f62193ec478257579a2522f0b.png](https://i-blog.csdnimg.cn/blog_migrate/929adac27ec4a1f3de5bd81889683a25.jpeg)
- @EqualsAndHashCode
提供无参构造方法以及 equals、hashCode 方法
includeFieldNames 是否包含属性名
exclude 排除指定属性
callSuper 是否包含父类属性
![6e0ff979f7c9c6cf0f47258ecfa8606e.png](https://i-blog.csdnimg.cn/blog_migrate/072d3e27b45b147e49837a384831f1ba.jpeg)
- @AllArgsConstructor
提供一个全参数的构造方法,默认不提供无参构造
![23c972cc5da46534db8bd84bf6fd29d8.png](https://i-blog.csdnimg.cn/blog_migrate/e04de857ac09c807aaec89c5a8e86234.jpeg)
提供一个无参构造
![1b5abd5dac8c633e987a31f55ea589b1.png](https://i-blog.csdnimg.cn/blog_migrate/272bcfa7dbf1143289bb19feebec371f.jpeg)
结合了@ToString,@EqualsAndHashCode,@Getter、@Setter、@NoArgsConstructor
staticConstructor 生成静态工厂方法的方法名,如果设置了该参数,则生成的无参构造方法将被置为私有的。
![d3748a0fb154f47b1ad9f2a0329b5568.png](https://i-blog.csdnimg.cn/blog_migrate/78f4b22a13c97d52d389cc4ba4fc01aa.jpeg)
提供 org.slf4j.Logger 变量,变量名为 log
![0aeeb2ab2b24ed89f0d01f4d0f60a4c8.png](https://i-blog.csdnimg.cn/blog_migrate/8186d18b5f998918481a720fd99e7b89.jpeg)
本章目标
本章将在 SpringBoot集成SpringBootJPA完成CURD 的基础上,整合 lombok,实现对数据库表的操作。 熟悉并学会使用 lombok,简化项目代码
操作步骤
本文使用 Idea 集成开发环境
环境准备
安装 lombok 插件
File -> settings,打开 Idea 的设置界面,从左侧栏选择 Plugins 选项,再在右侧查询 lombok,点击安装。
添加依赖
引入 Spring Boot Starter 父工程
![c529041d32618297fb8eb17109c8f686.png](https://i-blog.csdnimg.cn/blog_migrate/d644b4cbd240083105ab6f56bd8c8f38.jpeg)
添加 lombok 的依赖
![f77dc8a0d7c73d6f1f73b2d6352b0eaa.png](https://i-blog.csdnimg.cn/blog_migrate/0b5f2a3afbc7c1d2aa52c8696690e320.jpeg)
同时添加对 spring-boot-starter-test 的依赖,用于进行单元测试,完整依赖如下
![e924d7905585e15f0482af62582e4d8e.png](https://i-blog.csdnimg.cn/blog_migrate/3543c63b2beddb76068a4146265c58dc.jpeg)
编码
改写实体类
将 User 类的 get / set 方法全部删除,在类上添加注解 @Data,修改后的 User 类代码如下,可以看到整个类的代码变得非常清爽。
![41e4007f68cce7793fa969b53c33c2f3.png](https://i-blog.csdnimg.cn/blog_migrate/5ef08af83da4b9620dbbe028946f6d14.jpeg)
验证结果
编写测试用例
![bec8a7baff260e24d0be23a074e36e21.png](https://i-blog.csdnimg.cn/blog_migrate/c8471b297c8a60fa360f3da48784c762.jpeg)
可以看到,改变后的实体类跟改变前的实体可以达到同样的效果。
源码地址
本章源码 : https://gitee.com/gongm_24/spring-boot-tutorial.git
总结
Lombok 只是为了减少一些无关紧要的代码,减少编码的工作量,并不会减少程序的复杂度,这部分代码会在项目编译期间自动生成。