bean id 的名称和引用名称是否应该始终在 spring 中相同?

Should the name of bean id and the reference name be same always in springs?

我最近在研究 Springs 框架,刚想出了一个小问题。 假设如果我们有这样的 class:

class A
{
    @Autowired
    private B hello;
    ....
    ....
}

在 xml 文件中我定义如下:

<bean id="abc" class="org.eclipse.packageName.B"/>

创建的bean中的id名称和classA中提到的引用名称是否相同?

另一个问题是:如果我们@autowired a field.How 这个链接是在内部完成的,那么编译器如何知道 class 的 bean 在 xml 中被提及?

不,您的 bean id 不需要与引用中的字段名称相同 class。注入是基于类型而不是 Spring 中的 id(除非你使用 @Qualifier 注释)。

注入由 Spring IoC container 在运行时提供。

id 参数用于限定 bean。所以它不需要与 class 名称相同。您可以通过以下方式引用您的 bean:

@Autowired
@Qualifier("abc")
private B Hello

如果您提供两个相同类型的 bean,那么您可以通过使用 @Qualifier 注释引用它的 id 来指定要自动装配的 bean,这很有用。 如果您只有一个特定类型的 bean,那么 @Qualifier 是多余的,并且 Spring 将在引用该单个 bean 时自动自动装配它,而无需知道它的 id。