我们创建 POJO 类时,经常需要先写属性,然后手写或者自动生成 get 和 set 方法,然后还要重写 toString 方法....一系列操作下来,这个 POJO 类便会产生太多的样板式代码。

这种传统的方式不仅使得代码十分臃肿,有时也不方便维护,比如:当变量名或者是修饰符改变了,我们就要删除 set、get 方法重新生成。

而 Lombok 出现就是为了解决代码书写的冗余问题,下面对其进行详细进行介绍。

一、基本介绍

1,Lombok 介绍

(1)Lombok 提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码。

比如:在一个 POJO 中,一个属性的 getter 和 setter 可通过 @Getter 和 @Setter 注解来取代,代码编写就更加简洁和快速。

(2)而对应的注解最终会在编译源码的时候生成对应的方法,所以不会影响任何运行效率。

2,插件安装

(1)这里以 Intellij IDE(Mac 版)为例,依次打开 Preferences 窗口 -> Plugins -> Marketplace,搜索 Lombok 插件然后安装。

(2)安装后重启 IDE。

3,添加依赖

(1)修改项目的 pom.xml 文件,添加如下 maven 依赖:

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.6</version>
</dependency>

(2)修改 pom.xml 后 IDE 自带的 maven 会自动下载 jar 包,并在下方显示 jar 包下载进度,我们可以耐心等一会。

二、var 与 val

(1)val、val 关键字可以让我们在定义一个变量时候不需要提前指定它的类型,它的实际的类型将由初始化的表达式推断:

  • var 所声明的变量是非 final 的。
  • val 所声明的变量是 final 的。
var example = new ArrayList<String>();
example.add("welcome to hangge.com");
val foo = example.get(0);

(2)上面代码将会翻译成如下 Java 程序:

ArrayList example = new ArrayList<String>();
example.add("welcome to hangge.com");
final String  foo = example.get(0);

三、Lombok 注解概览

Lombok 插件主要为我们提供了如下注解,这里对其做一个简单的汇总。各个注解详细的介绍以及用法,可以参考我后续的文章。

  • @Getter 注解在属性(类)上,为属性(所有非静态成员变量)提供 get() 方法
  • @Setter 注解在属性(类)上,为属性(所有非静态成员变量)提供 set() 方法
  • @ToString 该注解的作用是为类自动生成 toString() 方法
  • @EqualsAndHashCode 为对象字段自动生成 hashCode() 和 equals() 实现
  • @AllArgsConstructor、@RequiredArgsConstructor、@NoArgsConstructor 顾名思义,为类自动生成对应参数的构造器
  • @Data 注解在类上,自动为所有字段添加 @ToString、@EqualsAndHashCode、@Getter。为非 final 字段添加 @Setter 和 @RequiredArgsConstructor。本质上相当于几个注解的综合效果
  • @Value 注解和 @Data 类似,区别在于它会把所有成员变量默认定义为 private final 修饰,并且不会生成 set() 方法
  • @Log、@Log4j、@Log4j2、@Slf4j、@XSlf4j、@CommonsLog、@JBossLog 注解在类上,自动为类添加对应的日志支持
  • @NonNull 注解在方法参数上,用于自动生成空值参数检查,自动帮助我们避免空指针
  • @Cleanup 自动帮我们调用 close() 方法,作用在局部变量上,在作用域结束时会自动调用 close() 方法释放资源,可以关闭流
  • @Builder 注解在类上,被注解的类加个构造者模式
  • @Synchronized 注解在类上,加个同步锁
  • @SneakyThrows 等同于 try/catch 捕获异常

SpringBoot - Lombok使用详解1(基本介绍、安装配置、var和val)相关推荐

  1. 操作Redis客户端工具详解之功能介绍及配置

    问题背景 日常开发过程中,对于缓存,我们并不陌生.常用的缓存有个Redis.memcache.memcached等.那么操作缓存的工具又有很多,我们该怎么选择呢? 今天我们聊一下Redis的操作客户端 ...

  2. Galera Cluster for MySQL 详解(二)——安装配置

    目录 一.Galera集群实验环境 二.初始安装 1. 安装galera-3.mysql-wsrep-5.7.Percona-XtraBackup-2.4.15 2. 修改配置文件 3. 初始化集群 ...

  3. mysql data文件夹恢复_【专注】Zabbix源码安装教程—步骤详解(2)安装并配置mysql...

    四.安装并配置mysql(1) 解压mysql-5.7.26.tar.gz与boost_1_59_0.tar.gz #tar -xvf mysql-5.7.26.tar.gz #tar -xvf bo ...

  4. php+mysql案例含源码_【专注】Zabbix源码安装教程—步骤详解(1)安装前准备

    一.实验环境准备 Rhel 7.6 x86_64(server) 192.168.163.72 Rhel 6.5 x86_64(agent) 192.168.163.61 均已配置操作安装光盘为YUM ...

  5. Lombok 使用详解,简化 Java 编程

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者 | 日拱一兵 来源 | 公众号(日拱一兵) 在 Java 应 ...

  6. java lombok 视频_Java开发神器Lombok使用详解

    最近正在写SpringBoot系列文章和录制视频教程,每次都要重复写一些Getter/Setter.构造器方法.字符串输出的ToString方法和Equals/HashCode方法等.甚是浪费时间,也 ...

  7. Lombok使用详解

    Lombok使用详解 前言 在Java中,封装是一个非常好的机制,最常见的封装莫过于get,set方法了,无论是Intellij idea 还是Eclipse,都提供了快速生成get,set方法的快捷 ...

  8. SpringBoot 整合EasyExcel详解(一)-高性能Excel方案

    SpringBoot 整合EasyExcel详解(二)-写Excel SpringBoot 整合EasyExcel详解(三)-填充Excel-官方原版 一.概述 Java解析.生成Excel比较有名的 ...

  9. SpringBoot异常处理ErrorController详解

    文章目录 一.背景 二.SpringBoot的默认异常处理BasicErrorController 三.自定义错误异常 写在前面: 我是「境里婆娑」.我还是从前那个少年,没有一丝丝改变,时间只不过是考 ...

最新文章

  1. CSDN蒋涛大数据表明:DCO - 区块链时代企业级服务的全新机会
  2. php 下载exe 打不开,EXE文件打不开的解决方法
  3. 9行代码AC——1011 A+B 和 C (15分)
  4. CF618F Double Knapsack
  5. MBR分区表详解(SD卡)
  6. mac air 2019安装双系统
  7. 14款免费的GIF制作软件(转载)
  8. 招聘:JAVA软件开发工程师
  9. 哪些学校有计算机博士点,哪些学校有计算机应用博士点
  10. HC32L130基于Xmodem协议实现IAP串口在线升级
  11. C语言随机数:rand()和srand(time(NULL))的使用
  12. 微信小程序实现一个表格table
  13. 《Linux内核修炼之道》精华分享与讨论(7)——分析内核源码如何入手?(下)
  14. 个人博客添加网易云音乐Flash插件
  15. python scrapy爬虫电影_Python爬虫Scrapy框架(2) -- 爬取优酷电影进阶
  16. phpcms 之 添加栏目时,输入英文栏目之后,总是提示栏目已存在
  17. html中的 脚本制作教程,html5教程制作简单画板代码分享
  18. Pandownload作者被抓,破解百度网盘的哥们!
  19. 苹果各种LTE有锁机改4G最新IPCC下载
  20. android 引入字体文件,Android 导入字体(goolge io 2017)

热门文章

  1. 飞机大战之-添加背景
  2. QQ头像变灰算法[图]
  3. 一文彻底搞懂股权投资中GP/LP关系! | 资本智库
  4. #{}和¥{}的区别
  5. sqlmap的用法,sqlmap -r
  6. 通过UA区分微信PC端浏览器还是手机端浏览器
  7. 易中天讲座免费在线学习 免费下载
  8. 高中日语老师教师资格证考试成功通过前辈备考经验分享
  9. 总裁演说思维:商务谈判最经典的12个技巧
  10. 什么是 SDN?SDN 和 NFV 有什么区别?