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

@使用构造函数自动连线?[副本]

乔俊才
2023-03-14

我想知道以下解决方案之间的区别是什么,为什么使用解决方案2?有什么好处吗?

解决方案一:

public A {
  @Autowire
  private B b;
}

public B {
  ...
}

解决方案2:

public A {
  private B b;
  
  @Autowire
  public A(B b) {
     this b=b;
  }
}

public B {
  ...
}```

共有1个答案

金坚
2023-03-14

所以,若您通过属性注入来初始化bean,那个么由于不同的原因,您可以在运行时得到未初始化的bean。这可能是运行时的NPE。但是如果使用构造函数的注入,它将是一个引导异常。如果您尝试将空参数依赖项注入构造函数,则可能会更快地发现问题。这是一个“快速失败”的想法。此外,如果存在循环依赖,则应用程序在引导过程中会失败。你想早点知道。

 类似资料:
  • 问题内容: 如何构建接收另一个点(x,y)并复制其值的复制构造函数? 我决定签名:,但我不知道该写些什么… Point类看起来像: 我试过了: 但我几乎可以肯定我会做得更好。 n 问题答案: 不,您的尝试 绝对没问题…(我已经更正了参数类型。) 我很想进行make 和final的操作,并且使该类final的操作,但这是因为我喜欢不可变的类型。其他人肯定有不同意见:) 在继承层次结构上进行克隆比较棘

  • 我在网上做了很多搜索,但找不到一个使用自动连接构造函数进行单元测试的例子。我正在使用Spring将属性文件中的值自动关联到我的应用程序。我想对我的应用程序进行单元测试。java的start方法,但我有一个自动连接的构造函数,所以我不知道如何实例化MyApp。在没有自动连线属性的情况下,我在单元测试中这样做: 我不想模拟自动布线,因为我需要从属性文件中获取值,并且为了使事情更加复杂,我正在通过注释配

  • 我在我的spring boot应用(spring Hibernate/Data/JPA/Web)中有这个类: pkg实体: pkg存储库: pkg服务: 如果我不创建任何控制器,所有工作,但如果我创建一个控制器: pkg控制器: 我得到这个错误(ConfigController中的autowired ConfigService错误): 第一个问题是:我已经注释了@Transaction的BaseS

  • 引用自C Primer 如果我们显式地要求编译器使用生成移动操作,并且编译器无法移动所有成员,那么移动操作将被定义为删除 如果类有一个定义自己的复制构造函数的成员,但不定义移动构造函数,或者如果类有一个不定义自己的复制操作的成员,并且编译器无法合成,则移动构造函数被定义为删除移动构造函数 有些代码似乎违反了这条规则: X没有定义移动构造函数,编译器不能为它合成一个。 根据上述规则,的移动构造函数被

  • 我有一个组件如下: 这是另一个类,我在哪里自动连接上面的类: 在上面的自动布线中,我需要使用参数化构造函数。如何传递构造函数参数?

  • 问题内容: 我实现了此处描述的副本构造函数。但是问题仍然是,当我更新时,会将相同的更新应用于。所以,我不明白我的代码有什么问题? 问题答案: 在复制构造函数中,您只是在进行浅表复制,而您需要进行深表复制: 在这里,您仍在复制的引用,该引用仍指向same 。您也应该对其进行修改以创建列表的副本。可能还需要像下面这样在arraylist中创建元素的副本: