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

时间:2017-09-04 13:38:16

标签: java spring spring-bean

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

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

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

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

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

另一个问题是:如果我们@autowired一个字段,编译器如何知道xml中提到了这个类的bean。这个链接是如何在内部完成的?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

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

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

如果您提供两个相同类型的bean,那么这很有用,您可以通过使用@Qualifier注释引用它的id来指定要自动装配的bean。 如果你只有一个特定类型的bean,那么@ Qualifier是多余的,只要引用它就会自动自动装配这个bean,而不需要知道它的id。