【问题标题】:What rules govern the mapping and assignment of dependency and injection in an IoC Container?哪些规则管理 IoC 容器中依赖项和注入的映射和分配?
【发布时间】:2022-10-22 18:35:42
【问题描述】:

什么规则管理 bean(依赖项)到注入候选者(有资格注入依赖项)的映射?

说在配置文件中有一个构建器功能

@Autowired
MyFacilityInstance myFacility = MyFacilityConfigurer.builder()
.setA(ITypeA someIndentifierA),
.setB(ITypeB someIdentifierB));

我想通过编写两个bean来编写bean来为这两个参数提供实例。

bean函数的标识符是什么? bean函数的标识符是要注入的接口的名称吗?以及如何键入 bean 函数(又名依赖项)?使用要实例化的接口还是使用其实现之一的符号?

@Bean
SomeImplementationA iTypeA() {
  return new SomeImplementationA();
}

@Bean
SomeImplementationA iTypeA() {
  return new SomeImplementationA();
}

在此示例中,我使用了要注入的接口。但这也适用于注入其他子类的普通类吗?

我确信这并不是这个映射复杂性的全部。

您能否回答我的问题,以便为配置文件的其他部分正确编写 Bean?

我在哪里可以阅读更多关于这些规则的信息?你有我的来源吗?

【问题讨论】:

    标签: java spring dependency-injection inversion-of-control


    【解决方案1】:

    bean函数的标识符是什么? bean函数的标识符是要注入的接口的名称吗?以及如何键入 bean 函数(又名依赖项)?使用要实例化的接口还是使用其实现之一的符号?

    标识符可能是 bean 实现了要注入的类型的给定接口,如您的示例中所示。这也适用于类,但不太常见。通过类型注入限制了可以在 IoC 中使用的全部实现每个类类型的 bean,因此可以在给定范围内唯一标识。另一方面,您可以在注入端(命名 bean)使用名称和对该名称的引用来扩展 bean 的标识。

    在此示例中,我使用了要注入的接口。但这也适用于注入其他子类的普通类吗?

    是的,没有使用接口的义务,但在实践中你会从使用接口中受益很多(即从实现中解耦),因此依赖项不依赖于接口中未指定的实现特性,使其更可行注入不同的 bean 实现,例如在测试中经常做的。

    如果您使用的是非常流行的 Spring IoC,这些文档可能会对您有所帮助。它们也大多适用于其他 IoC 容器。

    对于命名 bean:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-13
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多