引言

此文为简单的Lombok 演示。

Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。简而言之,一句话就是:通过简单的注解来精简代码达到消除冗长代码的目的。

官网:https://projectlombok.org/

GitHub:https://github.com/rzwitserloot/lombok

一、Lombok的优点

  • 提高编码效率
  • 使代码更简洁
  • 消除冗长代码
  • 避免修改字段名字时忘记修改方法名

二、如何使用

2.1 前期准备

在maven中央仓库中搜索lombok依赖,官方说maven 仓库和官方下载的jar包是一样的,所以,我们只需要下载maven依赖即可:

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version><scope>provided</scope>
</dependency>

然后,我们还需要去本地仓库双击jar 包安装一下,这一步主要是对 IDE进行lombok 的插件安装

安装完成后,需要重启 IDE,才能生效。

2.2 实际应用

首先,我们来创建一个实体类 Dept:

package com.group.coursesystem.entity;public class Dept {private int deptId;private String deptName;}

使用Lombok 为我们提供的自动生成方法注解,观察 Eclipse 中的 Outline 视图:

无参构造器:

全参构造器:

get/set方法及 toString():

链式 set 方法设置:

三、代码测试

构造器测试:

get/set 方法测试,set 方法为链式调用:

自动变更方法名:

四、常用注解

注解 描述
@Getter / @Setter 可以作用在类上和属性上,放在类上,会对所有的非静态(non-static)属性生成Getter/Setter方法,放在属性上,会对该属性生成Getter/Setter方法。并可以使用该注解中的AccessLevel属性来指定Getter/Setter方法的访问级别。
@ToString 生成toString方法,默认情况下,会输出类名、所有属性,属性会按照顺序输出,以逗号分割。可以使用该注解中的exclude属性来指定生成的toSpring方法不包含对象中的哪些字段,或者使用of属性来指定生成的toSpring方法只包含对象中的哪些字段
@EqualsAndHashCode 默认情况下,会使用所有非瞬态(non-transient)和非静态(non-static)字段来生成equals和hascode方法,也可以使用exclude或of属性。
@NoArgsConstructor 生成无参构造器
@RequiredArgsConstructor 会生成一个包含标识了@NonNull注解的变量的构造方法。生成的构造方法是private,如果想要对外提供使用的话,可以使用staticName选项生成一个static方法。
@AllArgsConstructor 生成全参构造器,当我们需要重载多个构造器的时候,Lombok就无能为力了。
@Slf4j 该注解是用来解决不用每次都写 private static final Logger log = LoggerFactory.getLogger(XXX.class); 这句代码的。使用的日志框架是LogBack,可以为类生成名为 log 的Slf4j 日志对象,该对象是 static final 的
@Log4j 该注解也是用来解决不用每次都写日志对象声明语句的,从字面上也可以看出,使用的日志框架是log4j
@Data 该注解是 @ToString、@EqualsAndHashCode注解,和所有属性的@Getter注解, 以及所有non-final属性的@Setter注解的组合,通常情况下,我们使用这个注解就足够了。

五、注意事项

注意,在Eclipse 或 IDEA 中,必须加入Lombok的插件,具体安装方法是双击你的 Lombok.jar 包,其内部集成了自动安装插件的程序,根据提示信息完成插件安装(官方标准步骤)。

如果是 maven 依赖的jar ,就可以去本地仓库中根据 GAV 坐标找到对应版本的 jar 包,如果是手动下载 jar包,也可以,它们是相同的,安装过程很快,几乎没有什么明显的提示,如果在会话框中看到"has installed" 字样,说明安装成功,成功后需要重启 Eclipse 。

Lombok既是一个IDE插件,也是一个项目要依赖的jar包。Lombok是依赖jar包的原因是因为编译时要用它的注解。是插件的原因是他要在编译器编译时通过操作AST(抽象语法树)改变字节码生成。也就是说他可以改变java语法.。他不像spring的依赖注入或者hibernate的orm一样是运行时的特性,而是编译时的特性。

另外,如果是 STS,官方说是可以支持,但是目前我的 STS 无法被 Lombok 检测程序检测到,因此无法安装并使用。具体的表现形式是注解可以使用,但是没有实际效果,或 Outline 视图没有变化(ps:很可能是因为我的STS是免安装版/便携版)。

注意,不必担心Lombok 只会在开发中生效 运行期不生效的问题。

参考:

《Lombok快速入门》

《Lombok Project》

Lombok ——自动化方法生成器相关推荐

  1. 重磅推出:AutoProject Studio 自动化项目生成器

    AutoProject Studio 自动化项目生成器 核心架构图 AutoProject Studio 自动化项目生成器是一款基于C#.Net Framework 4.0为平台自主研发.专为软件 设 ...

  2. express路由管理的几种自动化方法分享-js教程-PHP中文网

    我们平时在使用express写代码的过程中,会根据类别,将路由分为多个不同的文件,然后在项目的入口文件(例如app.js)中将其依次挂载,例如: 1 2 3 4 5 6 7 const index = ...

  3. linux 脚本裁剪内核,Linux 内核裁剪的自动化方法

    Linux 内核裁剪的自动化方法 随着广泛地获得使用并被移植到不同的平台,Linux 内核源代码正在越来越大,比如, Linux 2.6.28 中, 文件数有 25282 个,大小有350M. 对于某 ...

  4. 使用Java自动化方法模拟Android手机点击、触屏事件

    最近有一个测试需求,需要重复性的滑动手机.对手机进行触摸.点击操作等,所以就需要实现一个Android模拟人工操作的功能.一开始想写一个APK,但在实现过程中遇上了麻烦,好像需要系统应用权限等,笔者本 ...

  5. idea中lombok下载方法和搜不到lombok解决方法

    lombok lombok的下载方法 idea左上角的file->setting->左边的Plugins上面搜索lombok,如果搜得到就可以直接下载 当然也有lombok搜索不到的情况: ...

  6. 手机屏幕纸java_使用Java自动化方法模拟Android手机点击、触屏事件

    最近有一个测试需求,需要重复性的滑动手机.对手机进行触摸.点击操作等,所以就需要实现一个Android模拟人工操作的功能.一开始想写一个APK,但在实现过程中遇上了麻烦,好像需要系统应用权限等,笔者本 ...

  7. JavaBean的get、set方法生成器

    來源:http://www.crazyit.org/redirect.php?tid=3779&goto=lastpost BeanGenerator.java package codegen ...

  8. 胡伟 | 面向多实体人机协作消解的对比表生成自动化方法

    众包实体消解 实体消解(Entity Resolution,简称ER)旨在发现不同知识图谱中指称真实世界相同对象的实体.众包实体消解(Crowd ER)在使用机器的基础上,还使用人来完成实体消解任务. ...

  9. 自动化方法模拟Android手机点击、触屏事件

    使用apk来自动化测试,需要手机有root权限,所以采用写java程序,利用adb shell来实现自动化测试. 一.所需知识 最基础的adb shell 指令.input tab 等. 二.所需环境 ...

最新文章

  1. 无向图——双连通分量
  2. Strategy Pattern(策略模式)
  3. 1.cocos2dx之Menu(CCMenuItemFont,CCMenuItemImage,CCMenuItemLabel,CCMenuItemSprite,CCMenuItemToggle)
  4. 前端demo_【前端3分钟】Script Error产生的原因和解法
  5. Linux 普通用户和超级用户的切换
  6. 作者:林春雨,男,现任北京拓尔思信息技术股份有限公司高级副总裁、助理研究员。...
  7. Oracle数据库的备份与恢复技术
  8. vue下使用axios应用
  9. api网关选型_微服务 API 网关 APISIX 发布 0.5 版本,达到可用状态
  10. 简单封装POI导出excel
  11. 170923_Spring Cloud 微服务实战(翟永超著) 读书笔记(一)_什么是Spring Cloud?
  12. 为什么现在很多人不看好商汤科技?
  13. 程序员转行后都怎么样了,分享我身边的真实经历!
  14. c语言求解连续数列编程题,数列-题解(C语言代码)
  15. 身份证ocr的API接口,让身份证信息录入更快捷
  16. jQuery - 元素遍历
  17. HTTP协议之vary
  18. mysql l查看历史等锁信息_查看锁信息(开启InnoDB监控)
  19. 怎么使用ArcMap进行洪水淹没分析
  20. The 2022 ICPC Asia Regionals Online Contest (II) J

热门文章

  1. java setsize_Java Vector setSize()方法与示例
  2. 解放双手!推荐一款阿里开源的低代码工具,YYDS!
  3. 服务器运行容器工具大盘点!
  4. 负载均衡实现的几种方式
  5. Redis笔记之基本数据结构 动态字符串SDS
  6. C++总结篇(5)vector
  7. 《c程序设计语言》练习1-12
  8. 八、华为鸿蒙HarmonyOS应用开发之Java UI框架、常用TextField组件使用
  9. SpringBoot执行器端点Actuator Endpoint
  10. Java编写一个WebService并在Tomcat上发布