nek*_*kel 10 java spring inject lombok
龙目岛的有什么区别
@RequiredArgsConstructor 
和
@RequiredArgsConstructor(onConstructor = @__(@Inject))
我知道RequiredArgsConstructor只在构造函数中注入所有最终依赖项。
And*_*lko 15
@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字段。
给出的答案已经清楚地解释了OP所询问的区别。但我也觉得知道为什么你需要 @RequiredArgsConstructor(onConstructor = @__(@Inject))而不是@RequiredArgsConstructor?也很重要。如果您有兴趣,请继续阅读...
简而言之,当 Spring 构造你的 beans(用 @Component 或相关 @Controller、@Service、@Repository 注释的类 - 它们都具有 @Component + 额外功能)时,Spring 将需要查看类构造函数来构造它。如果你的类中只有 1 个构造函数,没问题,不用混淆,你只需要@RequiredArgsConstructor.
如果你有 2 个或更多构造函数怎么办?Spring 使用哪一个来构建您的 bean?输入Lombok's @RequiredArgsConstructor(onConstructor = @__(@Inject))或更流行的 @RequiredArgsConstructor(onConstructor = @__(@Autowired)). 正如注释的属性所说,它将@Autowired放在 构造函数上, 以告诉 Spring 在构造时使用该构造函数。 
就是这样!
PS如果您想了解更多相关内容,我推荐这篇文章。
第二个将把你提到的注释放在生成的构造函数上。
例如,这个:@RequiredArgsConstructor(onConstructor = @__(@Inject))
将生成一个带有注释的构造函数@Inject
| 归档时间: | 
 | 
| 查看次数: | 8764 次 | 
| 最近记录: |