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

jvlzgdj9  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(409)

我最近在深入研究springs框架,提出了一个小问题。假设我们有这样一个类:

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

在xml文件中,我定义如下:

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

创建的bean中id的名称和类a中提到的引用名称是否应该相同?
另一个问题是:如果我们@autowired一个字段,编译器如何知道这个类的bean在xml中被提及。这个链接是如何在内部完成的?

bwitn5fc

bwitn5fc1#

不,bean id不需要与引用类中的字段名相同。注入基于类型,而不是spring中的id(除非您使用 @Qualifier 注解)。
注入由spring ioc容器在运行时提供。

jq6vz3qz

jq6vz3qz2#

id参数用于限定bean。因此它不需要与类名相同。您可以通过执行以下操作来引用bean:

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

如果您提供了两个相同类型的bean,则可以通过使用@qualifier注解引用其id来指定要自动关联的bean,这一点非常有用。如果您只有一个特定类型的bean,那么@qualifier是多余的,每当引用这个bean时,spring会自动连接它,而不需要知道它的id。

相关问题