当前位置: 首页 > 知识库问答 >
问题:

@必需的ArgsConstructor(onConstructor = @__(@注入))和@必需的ArgsConstructor之间有什么区别?

卫逸春
2023-03-14

龙目岛的有什么区别

@RequiredArgsConstructor 

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

我知道< code > RequiredArgsConstructor 仅在构造函数中注入所有最终依赖项。

共有3个答案

松兴邦
2023-03-14

给出的答案已经清楚地解释了OP所问的区别,但我也觉得知道为什么你会需要< code > @ RequiredArgsConstructor(on constructor = @ _ _(@ Inject))而不是< code > @ RequiredArgsConstructor ?也很重要。如果你感兴趣,请继续阅读...

简而言之,当Spring构造beans(用@Component或相关的@Controller、@Service、@Repository注释的类——它们都有@Component额外的功能)时,Spring将需要查看类构造器来构造它。如果您的类中只有一个构造函数,很好,不要混淆,您只需要< code > @ RequiredArgsConstructor 。

如果你有两个或更多的构造函数呢?Spring用哪个来构造你的bean?输入Lombok的< code > @ RequiredArgsConstructor(on constructor = @ _ _(@ Inject))或者更流行的< code > @ RequiredArgsConstructor(on constructor = @ _ _(@ auto wired))。正如注释的属性所说,它将@Autowired放在构造函数上,告诉Spring在构造时使用该构造函数。

就这样附言:如果你想了解更多,我推荐这篇文章。

傅长恨
2023-03-14

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

例如,这个:@RequiredArgsConstructor(onConstructor=@__(@Inject))将生成一个用@Inject

江阳羽
2023-03-14
@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})也被接受。

我知道< code > RequiredArgsConstructor 注入了所有的最终依赖项。

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

 类似资料:
  • 和(表单验证)有什么区别?

  • 如果我有一个使用Lombok的类: 并尝试将它从 Jackson抛出了一个异常,尽管至少提供了一个创建者,但它不能反序列化。 然后,如果我向该类添加另一个字段,并将该字段添加到 JSON,则该字段将被取消序列化,没有任何抱怨。 有谁知道这是怎么回事?如果只有一个字段,为什么无法反序列化?

  • 我试图用创建一个基本配方类,但Lombok似乎没有正确创建所需的args构造函数。虽然它将成功创建其他构造函数,例如,但即使我使用/注释了值,所需的args构造函数也是空的。我已仔细检查是否已导入。 这是我的课程的精简版本: Lombok创建的构造函数是空的,我在构建的类文件中签入了它。 请注意,当我在类中使字段为最终字段时,Lombok将创建适当的所需args构造函数: 因此,它似乎忽略了注释。

  • 问题内容: 部分应用程序很酷。无法提供哪些功能? 是更有效还是更易读? 问题答案: 无法提供哪些功能? 在额外功能方面并没有太多(但是,请参阅稍后)–可读性在旁观者的眼中。 大多数熟悉函数式编程语言的人(尤其是系列的人)看起来都lambda很好–我说“大多数”,绝对不是全部,因为和我肯定是“熟悉”的人(等) 却被认为是lambdaPython中的一个令人眼花eyes乱的异常…… 他为曾经接受过Py

  • 我创建了一个表单,为X元素重复了两个输入。仅当我们在另一个元素中放入某些内容时,才需要每个元素: My.HTML 这不是预期的工作。我怎样才能让它正常工作? EDIT对我来说正确的解决方案(接受的答案帮助了我)

  • 问题内容: 两者之间的性能复杂度是多少 和 PS。 我知道第一个文件将包含每个文件,第二个文件将仅包含选定的类文件。 问题答案: 在运行时0。 两者都生成相同的字节码