文章目录
- 前言
- 一、什么是「必需字段」?
- 二、核心作用
- [三、和 Lombok 其他构造器注解的区别](#三、和 Lombok 其他构造器注解的区别)
- 四、常用场景
- 总结
前言
本文介绍通过lombok.RequiredArgsConstructor 对bean 进行依赖注入,@RequiredArgsConstructor 是 Lombok 框架提供的注解,核心作用:自动为 Java 类生成「只包含必需字段」的构造方法,省去手动编写构造器的代码,让代码更简洁。
一、什么是「必需字段」?
只有满足以下两个条件的字段,才会被纳入自动生成的构造方法:
- 被 final 修饰(不可变字段,必须初始化)
- 被 @NonNull 注解修饰(非空字段,必须赋值)
普通字段(既不是 final,也没有 @NonNull)不会被包含在生成的构造方法中。
二、核心作用
- 自动生成构造方法:编译期自动生成包含所有「必需字段」的构造器,无需手写
- 强制校验:@NonNull 修饰的字段,会自动生成非空校验(传 null 直接抛空指针异常)
- 简化代码:替代手动编写构造方法,减少冗余代码
三、和 Lombok 其他构造器注解的区别
| 注解 | 作用 | 包含的字段 |
|---|---|---|
| @NoArgsConstructor | 生成无参构造方法 | 无字段 |
| @AllArgsConstructor | 生成全参构造方法 | 类中所有字段 |
| @RequiredArgsConstructor | 生成必需字段构造方法 | 仅 final + @NonNull 字段 |
四、常用场景
Spring 依赖注入(推荐用法)
用在 Service/Controller 上,替代 @Autowired 注入,Spring 4.2+ 支持:
c
@Service
@RequiredArgsConstructor
public class UserService {
// final 修饰,自动注入,无需 @Autowired
private final UserMapper userMapper;
}
总结
@RequiredArgsConstructor 被 final 修饰, 或者被 @NonNull 注解修饰 ,可以进行spring 进行bean 的依赖注入 。