Lombok使用

Lombok 是一个 Java 第三方库,可以透过简单的注解省略 Java 的代码,像是 setter、getter、logger...等,目的在消除冗长的代码和提高开发效率

假设你在类上加上了一个 @Getter 和 @Setter 注解,那你就不用在写烦人的 getter 和 setter,lombok 会自动帮你产生出来啦!

之所以加个 lombok 的 @Getter 注解就可以帮我们自动生成所有变量的 getter,是因为 lombok 参与了 Java 在 compile 阶段生成 .class 档的过程,lombok 会帮我们自动写一堆 getter,然后塞进 .class 档,所以真正被编译出来的 User.class 档桉,是包含完整的 getter 的

简单的说,lombok可以算是一种语法糖,只是在帮我们增进开发效率而已,实际上所产生出来的.class档仍然是完全正常的

                                                                         安装 Lombok

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

1. 加入 maven 依赖

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

2. 在 IDEA中安装 lombok 插件

我使用的 IDEA 版本是 2019.3.3,可能会因为版本差异导致安装方式有改变

先点选左上角 Intellij IDEA -> Preferences

然后点击左边的 Plugins,再点击上面的 Marketplace tab,然后就可以在搜寻栏中输入lombok,并且找到lombok插件并安装它

为什么需要特地安装 IDEA lombok 插件?

其实在 maven 加入 lombok 依赖之后,使用 mvn clean package 就可以正常 build 过,在 IDEA 中点击绿色按钮也可以运行程式

之所以还要特地安装 IDEA lombok 插件,是因为如果不安装 lombok 插件的话,IDEA 就会没办法自动提示出 lombok 产生的方法,所以就会发生你的代码一片红,但是运行却可以通过的奇妙现象

像是下面这段代码中,因为对 IDEA 来说,代码裡并不存在 setter,所以没办法自动提示 setId()setName() 等方法,但是又因为我们在maven中有加入 lombok 依赖,所以点击第 13 行的绿色箭头运行程式的话,是可以正常运行成功的

所以 lombok 算侵入性很高的一个第三方库,只要团队中有一个人用 lombok 开发,那么所有的人都必须得安装上 lombok 插件,才不会在 IDEA 中一打开 project 时,整片都是痛苦的红字

Lombok 用法

lombok 官网提供了许多注解,但是「劲酒虽好,可不能贪杯」,你用了越多 lombok 的进阶用法,会让整个团队的学习曲线上升,反而会造成反效果,所以在此处只解释最最常见、并且我认为最必要的注解使用方式,其他的用法就不介绍了

重点介绍

@Data

整合包,只要加了 @Data 这个注解,等于同时加了以下注解

@Getter/@Setter

@ToString

@EqualsAndHashCode

@RequiredArgsConstructor

@Data 是使用频率最高的 lombok 注解,通常 @Data 会加在一个值可以被更新的对象上,像是日常使用的 DTO 们、或是 JPA 裡的 Entity 们,就很适合加上 @Data 注解,也就是 @Data for mutable class

@Value

也是整合包,但是他会把所有的变量都设成 final 的,其他的就跟 @Data 一样,等于同时加了以下注解

@Getter (注意没有setter)

@ToString

@EqualsAndHashCode

@RequiredArgsConstructor

上面那个 @Data 适合用在 POJO 或 DTO 上,而这个 @Value 注解,则是适合加在值不希望被改变的类上,像是某个类的值当创建后就不希望被更改,只希望我们读它而已,就适合加上 @Value 注解,也就是 @Value for immutable class

另外注意一下,此 lombok 的注解 @Value 和另一个 Spring 的注解 @Value 撞名,在 import 时不要 import 错了

 @Slf4j

自动生成该类的 log 静态常量,要打日志就可以直接打,不用再手动 new log 静态常量了

除了 @Slf4j 之外,lombok 也提供其他日志框架的变种注解可以用,像是 @Log、@Log4j...等,他们都是帮我们创建一个静态常量 log,只是使用的库不一样而已

SpringBoot默认支持的就是 slf4j + logback 的日志框架,所以也不用再多做啥设定,直接就可以用在 SpringBoot project上,log 系列注解最常用的就是 @Slf4j

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值