泪伤荡的编程指南 泪伤荡的编程指南
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM篇
  • 新特性
  • 进阶篇
  • 网络
  • 操作系统
  • 数据结构与算法
  • 硬件
  • 基础篇
  • MySql
  • Oracle
  • PostgreSQL
  • 达梦
  • Redis
  • Mongodb
  • Hive
  • 数据库比较
  • Spring
  • SpringMvc
  • SpringBoot
  • Hibernate
  • iBatis
  • Mybatis
  • Mybatis-plus
  • Mybatis-plus-join
  • 各个框架对比
  • UML画图
  • 设计须知
  • 开发流程
  • 开发理论
  • 架构体系
  • 设计模式
  • 开源知识
  • 分布式解决方案
  • SpringCloud
  • API网关
  • 注册中心
  • 配置中心
  • 服务调用
  • 分布式事务
  • 消息队列
  • 调度作业
  • 链路追踪
  • 服务保障
  • 搜索引擎Elk
  • 安全框架
  • 监控体系
  • 部署容器
  • Netty
  • Tomcat
  • Nginx
  • 图片云存储
  • 云存储
  • 虚拟机Linux
  • 项目部署
  • 容器部署
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • Bug记录仓库
  • 随笔
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 视频网站
  • 音乐网站
  • 商城网站
  • 论坛网站
  • scrm项目
  • Yudao-cloud
  • RuoYi-Vu-cloud
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
  • Java术语
  • 命名英语
  • 业务英语
  • 表字段英语
  • 包名英语
Github (opens new window)
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM篇
  • 新特性
  • 进阶篇
  • 网络
  • 操作系统
  • 数据结构与算法
  • 硬件
  • 基础篇
  • MySql
  • Oracle
  • PostgreSQL
  • 达梦
  • Redis
  • Mongodb
  • Hive
  • 数据库比较
  • Spring
  • SpringMvc
  • SpringBoot
  • Hibernate
  • iBatis
  • Mybatis
  • Mybatis-plus
  • Mybatis-plus-join
  • 各个框架对比
  • UML画图
  • 设计须知
  • 开发流程
  • 开发理论
  • 架构体系
  • 设计模式
  • 开源知识
  • 分布式解决方案
  • SpringCloud
  • API网关
  • 注册中心
  • 配置中心
  • 服务调用
  • 分布式事务
  • 消息队列
  • 调度作业
  • 链路追踪
  • 服务保障
  • 搜索引擎Elk
  • 安全框架
  • 监控体系
  • 部署容器
  • Netty
  • Tomcat
  • Nginx
  • 图片云存储
  • 云存储
  • 虚拟机Linux
  • 项目部署
  • 容器部署
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • Bug记录仓库
  • 随笔
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 视频网站
  • 音乐网站
  • 商城网站
  • 论坛网站
  • scrm项目
  • Yudao-cloud
  • RuoYi-Vu-cloud
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
  • Java术语
  • 命名英语
  • 业务英语
  • 表字段英语
  • 包名英语
Github (opens new window)
  • 开发工具篇

    • idea设置

      • 配置篇
      • 快捷键篇
      • debug篇
      • 插件篇
    • 玩转Git

      • 基础知识梳理
      • Git配置相关操作
      • git修改已提交人的用户名和邮箱
      • git提交规范
      • 常见问题
    • Maven相关

      • Maven简介
      • Maven常用命令
      • 依赖管理
      • Maven生命周期与插件
      • Maven项目管理工具
    • Apifox使用小结
    • nvm使用小结
    • JMeter使用小记
  • 工具库篇

    • lombok工具库

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

      • 工具类
      • 文件导入
      • 文件导出
    • 定时任务相关

      • 基础入门
      • SpringTask学习
      • Quartz学习
    • Hutool工具库

      • 图片压缩
    • 极光推送学习
    • OkHttp学习
    • BigDecimal类详解
    • PdfBox学习
  • 开发技巧篇

    • 常见数据校验注解
    • 字符串拼接的5种方式
    • 遍历集合的N种方式
    • 集合使用注意事项总结
    • MP使用小记
    • Stream流技巧总结
    • 字符串处理最佳实践
    • SQL语句优化
    • 时间字段处理小记
    • Curl用法解析
    • 列表分页的两种实现方案
    • HashMap根据value获取key
    • Map的7种遍历方式
    • 唯一索引和逻辑删除冲突解决方法
    • 正则表达式
    • 二维码扫码登录学习
    • 脱敏最佳实践
    • 日志记录相关
  • 工具类系列

    • 手写一个文件阅读器
    • 手写一个运行耗时计算器
    • 自定义实现Java Bean属性中列表元素格式校验注解及其实现
    • 父子工程项目搭建
    • 自制代码生成器
  • 随笔

    • HttpServletRequest知识小结
    • Spring MVC 项目构建流程
    • 虚拟机固定ip地址
    • 项目部署
    • 深入理解数组
    • IIS使用小记
    • From的两种类型解析
    • 开发疑惑
    • 开发小记
    • bug解决
  • 开发日常
  • 工具库篇
  • lombok工具库
泪伤荡
2023-09-13
目录

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/10/26 02:01:17
JMeter使用小记
Builder用法解析

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

Theme by Vdoing | Copyright © 2024-2025 泪伤荡 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式