@RequiredArgsConstructor(onConstructor = @__(@Inject)))和@RequiredArgsConstructor有什么区别?

2022-09-03 18:07:22

龙目岛的区别是什么

@RequiredArgsConstructor 

@RequiredArgsConstructor(onConstructor = @__(@Inject))

我知道它只在构造函数中注入所有最终的依赖项。RequiredArgsConstructor


答案 1
@RequiredArgsConstructor
class MyClass {
  private final DependencyA a;
  private final DependencyB b;
}

将生成

public MyClass(DependencyA a, DependencyB b) {
  this.a = a;
  this.b = b;
}

@RequiredArgsConstructor(onConstructor = @__(@Inject))
class MyClass {
  private final DependencyA a;
  private final DependencyB b;
}

将生成

@Inject
public MyClass(DependencyA a, DependencyB b) {
  this.a = a;
  this.b = b;
}

从 JDK 8 开始,语法也被接受。@RequiredArgsConstructor(onConstructor_ = {@Inject})

我知道注入了所有最终的依赖关系。RequiredArgsConstructor

所有必需的依赖项,包括 和 字段。final@NonNull


答案 2

第二个会把你提到的注释放在生成的构造函数上。

例如,this: 将生成一个带有注释的构造函数@RequiredArgsConstructor(onConstructor = @__(@Inject))@Inject


推荐