沉梦听雨的编程指南 沉梦听雨的编程指南
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)

沉梦听雨

时间是最好的浸渍剂,而沉淀是最好的提纯器🚀
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)
  • 开发工具篇

  • 工具库篇

    • lombok工具库

      • lombok注解使用小结
        • 常用注解
        • Bean 注入
          • @AllArgsConstructor - 全参构造方法
          • @RequiredArgsConstructor - 带参构造
          • @NoArgsConstructor - 无参构造
        • 学习参考
      • Builder用法解析
      • 异常相关注解
    • EasyExcel小记

    • 定时任务相关

    • Hutool工具库

    • 极光推送学习
    • OkHttp学习
    • BigDecimal类详解
    • PdfBox学习
    • OCR功能实现
  • 开发技巧篇

  • 工具类系列

  • 随笔

  • 开发日常
  • 工具库篇
  • lombok工具库
沉梦听雨
2023-09-13
1.6k
6.4m
目录
常用注解
Bean 注入
@AllArgsConstructor - 全参构造方法
@RequiredArgsConstructor - 带参构造
@NoArgsConstructor - 无参构造
学习参考

lombok注解使用小结

# lombok 注解使用小结

lombok 是在编译期时生成,可在 target 目录下看见构造器注入的内容。

# 常用注解

  1. @Data:注在类上,提供类的 get、set、equals、hashCode、canEqual、toString 方法
  2. @Setter:注在属性上,提供 set 方法
  3. @Getter:注在属性上,提供 get 方法
  4. @EqualsAndHashCode:注在类上,提供对应的 equals 和 hashCode 方法
  5. @Log4j/@Slf4j:注在类上,提供对应的 Logger 对象,变量名为 log

# Bean 注入

@NoArgsConstructor / @RequiredArgsConstructor / @AllArgsConstructor

这三个注解都是用在类上的,

  • 第一个和第三个都很好理解,就是为该类产生无参的构造方法和包含所有参数的构造方法
  • 第二个注解则使用类中所有带有 @NonNull 注解的或者带有 final 修饰的成员变量生成对应的构造方法。成员变量都是非静态的**,另外,如果类中含有 final 修饰的成员变量,是无法使用 @NoArgsConstructor 注解**的
  • 三个注解都可以指定生成的构造方法的访问权限,同时,第二个注解还可以用 @RequiredArgsConstructor(staticName="methodName") 的形式生成一个指定名称的静态方法,返回一个调用相应的构造方法产生的对象

# @AllArgsConstructor - 全参构造方法

1、注解介绍

用于自动生成一个包含所有参数的构造方法。

通常,如果你的类有多个属性,你需要手动编写一个构造方法,接受所有这些属性作为参数,然后将它们赋值给对象的属性。而 @AllArgsConstructor 可以自动帮你生成这个构造方法,大大简化了代码编写。

2、特点

  • 自动生成一个包含所有属性的构造方法。
  • 自动生成的构造方法默认是公共的(public),但你可以通过其他 Lombok 注解来修改它的可见性。

3、属性介绍

@AllArgsConstructor 注解没有直接定义的属性,但可以与其他 Lombok 注解结合使用来修改生成的构造方法的行为。

以下是一些常见的属性注解:

  • AccessLevel:通过设置这个属性,你可以修改生成的构造方法的访问级别。例如,@AllArgsConstructor(access = AccessLevel.PRIVATE) 将生成一个私有的构造方法。
  • onConstructor:这个属性允许你为生成的构造方法添加额外的注解。你可以列出需要添加的注解列表。例如,@AllArgsConstructor(onConstructor = @__({@Autowired})) 可以在生成的构造方法上添加 Spring 的 @Autowired 注解。

4、代码示例

@AllArgsConstructor
public class Person {
    private String firstName;
    private String lastName;
    private int age;
    
    // 自动生成的构造方法,接受所有属性作为参数
    // public Person(String firstName, String lastName, int age) {
    //     this.firstName = firstName;
    //     this.lastName = lastName;
    //     this.age = age;
    // }
    
    // 其他方法和属性...
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# @RequiredArgsConstructor - 带参构造

需求场景

当我们使用 @Autowired 进行 Bean 注入的时候,IDEA 会提示警告,不建议使用此方式进行注入。Spring 官方更推荐使用构造方法进行注入。

1、注解介绍

作用于类,用于生成包含 final 和 @NonNull (opens new window) 注解的成员变量的构造方法。

2、特点

  • 该注解作用于类上
  • 标记为 final 的对象,会自动进行注入
  • 使用 lombok 的 @NonNull 注解标记的对象,会自动进行注入

3、属性介绍

  1. staticName 属性:

    • 默认情况下,Lombok生成的构造方法是公共的(public),但是通过设置 staticName 属性,你可以将生成的构造方法设置为私有(private)。

    • 它还允许你自定义静态工厂方法的名称,并且该方法接受一个 final 和 @NonNull 注解的参数,返回类型为当前类的对象。

  2. access 属性:

    这个属性用于设置生成的构造方法的访问修饰符。如果你设置了 staticName 属性,那么这个属性也会影响到生成的静态工厂方法的访问修饰符。

    它支持以下选项:

    • PUBLIC:公共的
    • MODULE:Java 9 引入的新特性,表示模块可见性
    • PROTECTED:受保护的
    • PACKAGE:包私有的
    • PRIVATE:私有的
    • NONE:停用注解功能,不生成构造方法也不生成静态方法
  3. onConstructor 属性:

    这个属性允许你为生成的构造方法添加额外的注解。你可以列出需要添加的注解列表。(放在生成的构造方法上)

    • 在 JDK 7 之前,写法是 onConstructor = @_({@注解1, @注解2})
    • 在 JDK 8 及以后,写法是 onConstructor = {@注解1, @注解2}

4、代码示例

@Component
// 使用lombok的@RequiredArgsConstructor注解进行注入
@RequiredArgsConstructor
public class ZTestController implements CommandLineRunner {
	
	// 标记为final的,会自动进行注入
    private final AliaPay aliaPay;
	
	// 使用lombok的@NonNull注解标记的,会自动进行注入
    @NonNull
    private JingDongPay jingDongPay;
	
	// 未标记final或@NonNull,不会进行注入
    private WeixinPay weixinPay;

    @Override
    public void run(String... args) throws Exception {

        aliaPay.pay();

        jingDongPay.pay();

        if (weixinPay == null) {
            System.out.println("WeixinPay注入失败");
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# @NoArgsConstructor - 无参构造

注解介绍

顾名思义,@NoArgsConstructor 注解是针对无参数的构造函数,它会生成一个无参数的构造方法。

通常,当你的类没有明确定义构造方法时,编译器会自动创建一个默认的无参数构造方法。但是,如果你在类中定义了任何构造方法(包括有参构造方法),编译器将不再自动生成默认的无参数构造方法。这时,你可以使用 @NoArgsConstructor 注解来补充生成一个无参数构造方法。

主要特点:

  • 自动生成一个无参数的构造方法。
  • 可以与其他 Lombok 注解一起使用,如 @AllArgsConstructor 和 @RequiredArgsConstructor,以生成不同类型的构造方法。

# 学习参考

  • Lombok 安装及 Spring Boot 集成 Lombok | 芋道源码 —— 纯源码解析博客 (iocoder.cn) (opens new window)

  • lombok常用注解大全_z|x|y的博客-CSDN博客 (opens new window)

  • SpringBoot 使用lombok的@RequiredArgsConstructor注解进行Bean注入_@requiredargsconstructor 注入为null_fengyehongWorld的博客-CSDN博客 (opens new window)

  • lombok 基础注解之 @RequiredArgsConstructor_lombok requiredargsconstructor_笑看烟雨红尘的博客-CSDN博客 (opens new window)

  • @Data 使用与介绍_foxscallion的博客-CSDN博客 (opens new window)

上次更新: 2024/9/25 11:16:13
JMeter使用小记
Builder用法解析

← JMeter使用小记 Builder用法解析→

Theme by Vdoing | Copyright © 2023-2025 沉梦听雨 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式