使用 Lombok Builder 注入构造函数依赖

Inject constructor dependency using Lombok Builder

我有一个 class 文件如下

import com.google.inject.Inject;
import lombok.Builder;

@Builder
public class A {
  private final B objB;
  private final C objC;

  @Inject
  public A(B b, C c) {
     this.objB = b;
     this.objC = c;
  }
}

现在,如果我必须在另一个 class 中使用此对象,.builder() 方法是否会处理注入的依赖项。

 public class Main {
    public void doSomething() {
       A a = A.builder().build();
       a.getObjB(); // Will it be null ?
       a.getObjC(); // Will it be null ?

注入总是只有当你让 guice 处理实例创建时才有效。

所以当你使用

@Inject
private A a;

guice 会发现它需要一个 B 和一个 C 来创建 A 并注入它。

但是当你自己实例化 A 时,如果通过 new 或通过 builder() guice 不知道实例创建,那么在你的例子中,B 和 C 将为空.