我们创建 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. linux 服务器下发布前端

    前提: 1.本地安装xshell和xftp 2.第一次需重置实例密码 3.22端口必须开启(默认开启) Linux安装nginx在linux下安装nginx,首先需要安装 gcc-c++编译器.然后安 ...

  2. laravel request lifecycle

    1,  index.php2, 生成service container3,  service provider register/booted4, dispatch routing5, middlew ...

  3. Outlook怎么合并相同邮件?设置Outlook邮件为对话模式

    选择View->勾选"Show as Conversations", 这样同一个标题的邮件就是叠在一块显示了. 不蟹,bro.

  4. 使用centos8.5配置一台YUM源服务器

    公司的生产环境部署的Centos8.5, 现在已经EOL了, 为了给生产和测试机继续提供yum/dnf服务, 特意在公司的内部机房部署了一套本地yum源. 环境:centos 8.5 1. 下载镜像 ...

  5. STP协议-基础

    生成树协议 一 .技术背景一个缺乏冗余性设计的网络:任何一个网络节点出现故障,会造成单链路故障.单设备故障,使整个网络瘫痪. 引入冗余性的同时也引入了二层环路:网络的冗余性增强了,但是却出现了二层环路 ...

  6. 《Spring Boot从零开始学(视频教学版)》快速入门Spring Boot应用开发

    #好书推荐##好书奇遇季#<Spring Boot从零开始学(视频教学版)>,目前为止较好的一本Spring Boot入门书.京东当当天猫都有发售.本书配套示例代码.课件与教学视频.定价7 ...

  7. k8s入门_label标签、nodeSelector

    什么是label Label以key/value键值对的形式附加到任何对象上,如Pod,Service,Node, RC(ReplicationController)/RS(ReplicaSet)等. ...

  8. [MicroPython ESP32] 内存分析

    [MicroPython ESP32] 内存分析 [(1)芯片:ESP32-WROOM-DA] 手册: https://www.espressif.com.cn/zh-hans/support/doc ...

  9. protobuf如何还原proto源文件及描述字符串中左括弧的意义

    语法分析 和通常的有语法的结构一样,proto的编译也经过词法(tokenize)和语法(parse)两个阶段,相关代码分别在tokenizer.cc和parser.cc两个文件中. /// @fil ...

  10. M1处理器的电脑xcode模拟器编译报错问题详解及解决方案

    在M1芯片的苹果电脑中使用Xcode编译模拟器时,可能会碰到如下报错: 原因是由于M1模拟器架构是arm64架构,而Intel芯片是x86_64的架构,从而导致编译出现了问题. 这些报错,都是是由于项 ...