我们创建 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. Android Studio3.0的下载及其安装详解加eclipse下载安装配置jdk9

    关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己. 本篇文章同步微信公众号  欢迎大家关注我的微信公众号:「醉翁猫咪」 今天我们来讲解如何下载android studio 3.0及其 ...

  2. 详解在Linux中安装配置MongoDB

    最近在整理自己私人服务器上的各种阿猫阿狗,正好就顺手详细记录一下清理之后重装的步骤,今天先写点数据库的内容,关于在Linux中安装配置MongoDB 说实话为什么会装MongoDB呢,因为之前因为公司 ...

  3. 详解在Linux中安装配置MySQL

    最近在整理自己私人服务器上的各种阿猫阿狗,正好就顺手详细记录一下清理之后重装的步骤,今天先写点数据库的内容,关于在Linux中安装配置MySQL 安装环境 CentOS7 + MySQL5.7 下载安 ...

  4. git 使用详解(2)——安装+配置+获取帮助

    安装 Git Git 有许多种安装方式,主要分为两种,一种是通过编译源代码来安装:另一种是使用为特定平台预编译好的安装包. 从源代码安装 若是条件允许,从源代码安装有很多好处,至少可以安装最新的版本. ...

  5. Springboot mini - Solon详解(六)- Solon的校验框架使用、定制与扩展

    Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...

  6. Lombok使用详解(转)

    本文转自https://blog.csdn.net/u010695794/article/details/70441432 2017年04月22日 15:17:00 阅读数:10394 Lombok使 ...

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

    前言 在 Java 应用程序中存在许多重复相似的.生成之后几乎不对其做更改的代码,但是我们还不得不花费很多精力编写它们来满足 Java 的编译需求 比如,在 Java 应用程序开发中,我们几乎要为所有 ...

  8. Springboot mini - Solon详解(二)- Solon的核心

    Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...

  9. Spring4.X + spring MVC + Mybatis3 零配置应用开发框架搭建详解(1) - 基本介绍

    Spring4.X + spring MVC + Mybatis3 零配置应用开发框架搭建详解(1) - 基本介绍 spring集成 mybatis Spring4.x零配置框架搭建 两年前一直在做后 ...

  10. SpringBoot之DispatcherServlet详解及源码解析

    在使用SpringBoot之后,我们表面上已经无法直接看到DispatcherServlet的使用了.本篇文章,带大家从最初DispatcherServlet的使用开始到SpringBoot源码中Di ...

随机推荐

  1. top usage

    https://www.cnblogs.com/dragonsuc/p/5512797.html

  2. unity Android路径的相关部分代码

    using System; using System.Collections; using System.Collections.Generic; using System.IO; using Uni ...

  3. centos下安装部署nginx

    1.在安装Nginx之前,要确保已经安装了需要的软件:gcc.pcre-devel.zlib-devel.openssl-devel.如果没有安装,执行下面命令. yum -y install gcc ...

  4. Android MD5加密、RSA加密

    现在公司做金融项目,需要考虑安全加密方面的问题.感谢大牛同事(冯哥) ,给我很大的帮助. 考虑到安全优化,我们把秘钥.加密步骤放到native中.考虑用到的技术:(1 )jni,(2 )OpenSSL ...

  5. Python - Numpy 学习笔记

    #python - Numpy learning import numpy as np #---Numpy学习笔记---(第四章)--- #切片,浅拷贝 a = np.arange(10) print ...

  6. MySQL之校对集问题

    随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...

  7. C语言学习--练习--合并两个字符串

    将两个字符串合并追加在一起, 类似于python的str1+str2 #include<stdio.h> #include<string.h> #include<stdl ...

  8. 使用VS Code打造完美的嵌入式IDE

    参考这个博主https://blog.csdn.net/qq_34245464/article/details/100769643的博文, 使用VS Code再重新打造一次完美的嵌入式IDE平台. 前 ...

  9. HELM的使用

    一.helm的主要功能 1.创建新的chart 2.chart打包成tgz格式 3.上传chart到chart仓库或从仓库中下载chart 4.在kubernetes集群中安装或卸载chart 5.管 ...

  10. ant Vue 表格列多数据溢出省略显示

    1.实现下图缩式 二次更新:通过customRender设置添加悬浮窗,不需要再设置样式,注意动态数据使用的时候是一个大括号 { title:'业务分类', align:"center&qu ...