Spring Boot 中的 @RequiredArgsConstructor
注解详解
@RequiredArgsConstructor
是 Lombok 提供的一个非常实用的注解,它能自动生成包含必需参数的构造函数。
核心作用
这个注解会自动为类生成一个构造函数,参数包含:
-
所有声明为
final
且未初始化的字段 -
所有标记了
@NonNull
且未初始化的字段
在 Spring Boot 中的典型应用
特别适合用于依赖注入的场景:
@Service
@RequiredArgsConstructor
public class UserService {
private final UserRepository userRepo; // 会自动包含在构造函数中
private final PasswordEncoder passwordEncoder; // 会自动包含
// Lombok 会自动生成:
// public UserService(UserRepository userRepo, PasswordEncoder passwordEncoder) {
// this.userRepo = userRepo;
// this.passwordEncoder = passwordEncoder;
// }
}
@RestController
@RequestMapping("/api/user")
@RequiredArgsConstructor
public class Userontroller {
private final UserService userService ;
}
主要优势
-
减少样板代码 - 无需手动编写构造函数
-
完美支持依赖注入 - 与 Spring 的构造函数注入模式天然契合
-
促进不可变性 - 鼓励使用
final
字段,增强线程安全性 -
明确依赖关系 - 使类所需的依赖项一目了然
与其他 Lombok 构造器注解对比
-
@NoArgsConstructor
- 生成无参构造函数 -
@AllArgsConstructor
- 生成包含所有字段的构造函数 -
@RequiredArgsConstructor
- 只生成包含必需字段的构造函数
使用注意事项
-
确保开发环境和构建工具已正确配置 Lombok 插件
-
如果类中已存在构造函数,该注解不会覆盖它
-
要使 Spring 能使用这个构造函数进行注入,类必须是 Spring 管理的 Bean(带有
@Component
、@Service
等注解) -
推荐将依赖项字段声明为
final
,这样既安全又能确保被自动包含
这个注解能大幅简化代码,同时保持构造函数注入的各种优点,是 Spring Boot 开发中的常用利器。