# 注解 @RequiredArgsConstructor 详解

作用:忽略某些字段生成构造器

Lombok 提供的 @RequiredArgsConstructor 方式(会生成一个包含常量,和标识了 NotNull 的变量的构造方法)
在 springboot 项目中,controller 或 service 层中需要注入多个 mapper 接口或者另外的 service 接口,这时候代码中就会有多个 @AutoWired 注解,使得代码看起来什么的混乱。
lombok 提供了一个注解
@RequiredArgsConstructor(onConstructor =@_(@Autowired))
写在类上面可以代替 @AutoWired 注解,需要注意的是:在注入的时候需要用 final 定义,或者使用 @notnull 注解

image-20240316212600141

# 1. 注解注入:

Controller
public class FooController {
  @Autowired
  //@Inject
  private FooService fooService;
  // 简单的使用例子,下同
  public List<Foo> listFoo() {
      return fooService.list();
  }
}

# 2. 构造器注入:

Controller
public class FooController {
  private final FooService fooService; 
  @Autowired
  public FooController(FooService fooService) {
      this.fooService = fooService;
  }
  // 使用方式上同,略
}

# 3.setter 注入:

@Controller
public class FooController {
  private FooService fooService;
  // 使用方式上同,略
  @Autowired
  public void setFooService(FooService fooService) {
      this.fooService = fooService;
  }
}

# 4. 最后就是 lombok 中的 @RequiredArgsConstructor

@RequiredArgsConstructor
public class VerifyController {
    private final VerifyService verifyService;
    private final InvitationService invitationService;
    private final VerificationCodeService verificationCodeService;
}