Lombok的使用及注解含义

11 篇文章 1 订阅

一、简介

Lombok可以通过注解来帮助我们简化实体对象(POJO)的代码书写

二、如何使用

2.1、在IDEA中安装Lombok插件

File -> Settings -> Plugins

image-20230810133628791

image-20230810133706551

安装完成后重启IDEA

2.2、添加maven依赖

在 pom.xml 文件里增加

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <scope>provided</scope>
</dependency>

三、常用注解

@Getter / @Setter:自动生成类的 get() 和 set() 方法

@ToString:自动生成 toString() 方法

@NoArgsConstructor / @AllArgsConstructor:自动生成无参构造函数,全参构造函数

@EqualsAndHashCode:自动生成 equals() 和 hashCode() 方法

@Data: 相当于 @Getter、@Setter、@EqualsAndHashCode、@ToString 组合的效果

@Value:相当于 @AllArgsConstructor、@Getter、@EqualsAndHashCode、@ToString 组合的效果,并且类和变量都变成 final

@Accessors:可以配置生成 get() 和 set() 方法的样式和命名规则

@Slf4j:自动生成类的 log 静态常量

3.1、@Getter / @Setter

自动生成类的 get() 和 set() 方法

image-20230811163331544

3.2、@ToString

自动生成 toString() 方法

image-20230811163700637

3.3、@NoArgsConstructor / @AllArgsConstructor

自动生成无参构造函数,全参构造函数

image-20230811163939408

这里需要注意,如果不定义构造函数,编译器会默认生成一个空构造函数,但是当你定义了构造函数,编译器就不会生成空构造函数,所以一般这两个注解一起使用,除非只要全参构造函数

3.4、@EqualsAndHashCode

自动生成 equals() 和 hashCode() 方法

image-20230811164537596

3.5、@Data

相当于 @Getter、@Setter、@EqualsAndHashCode、@ToString 组合的效果

3.6、@Value

相当于 @AllArgsConstructor、@Getter、@EqualsAndHashCode、@ToString 组合的效果,并且类和变量都变成 final

3.7、@Accessors

这个注解需要结合 @Getter、@Setter 使用,当然 @Data 也可以

这个注解有三个参数

public @interface Accessors {

	boolean fluent() default false;
	
	boolean chain() default false;
	
	String[] prefix() default {};
}

3.7.1、@Accessors(chain = true)

我们先看 fluent 参数,将其设置为 true,相当于 get() 方法不受影响,set() 方法会返回对象本身(开启链式编程)

image-20230811164852972

这样我们创建对象后,可以这样赋值

public static void main(String[] args) {
	User user = new User();
	user.setUserId("1").setUserName("张三");
}

3.7.2、@Accessors(fluent = true)

再来看 fluent 参数,将其设置为 true,相当于,get() 和 set() 方法的 get 和set 字样去除了,并且 set 方法会返回对象本身(开启链式编程)

image-20230811171202702

这样我们创建对象后,可以这样赋值

public static void main(String[] args) {
	User user = new User();
	user.userId("1").userName("张三");
}

3.7.3、@Accessors(prefix = “xxx”)

使用prefix属性,get() 和set() 方法会忽视属性名的指定前缀,这里我们用 @Accessors(prefix = “user”) 举例,相当于 get() 和 set() 方法去除了 user 字样

image-20230811171710258

3.8、@Slf4j

自动生成该类的 log 静态常量

image-20230811173128922

当然我们一般用在业务处理类上,方便打印日志

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每天进步亿点点的小码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值