Spring @RequiredArgsConstructor 注解作用

Spring Boot 中的 @RequiredArgsConstructor 注解详解

@RequiredArgsConstructor 是 Lombok 提供的一个非常实用的注解,它能自动生成包含必需参数的构造函数。

核心作用

这个注解会自动为类生成一个构造函数,参数包含:

  1. 所有声明为 final 且未初始化的字段

  2. 所有标记了 @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 ;




}

主要优势

  1. 减少样板代码 - 无需手动编写构造函数

  2. 完美支持依赖注入 - 与 Spring 的构造函数注入模式天然契合

  3. 促进不可变性 - 鼓励使用 final 字段,增强线程安全性

  4. 明确依赖关系 - 使类所需的依赖项一目了然

与其他 Lombok 构造器注解对比

  • @NoArgsConstructor - 生成无参构造函数

  • @AllArgsConstructor - 生成包含所有字段的构造函数

  • @RequiredArgsConstructor - 只生成包含必需字段的构造函数

使用注意事项

  1. 确保开发环境和构建工具已正确配置 Lombok 插件

  2. 如果类中已存在构造函数,该注解不会覆盖它

  3. 要使 Spring 能使用这个构造函数进行注入,类必须是 Spring 管理的 Bean(带有 @Component@Service 等注解)

  4. 推荐将依赖项字段声明为 final,这样既安全又能确保被自动包含

这个注解能大幅简化代码,同时保持构造函数注入的各种优点,是 Spring Boot 开发中的常用利器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值