我最近在深入研究springs框架,提出了一个小问题。假设我们有这样一个类:
class A
{
@Autowired
private B hello;
....
....
}
在xml文件中,我定义如下:
<bean id="abc" class="org.eclipse.packageName.B"/>
创建的bean中id的名称和类a中提到的引用名称是否应该相同?
另一个问题是:如果我们@autowired一个字段,编译器如何知道这个类的bean在xml中被提及。这个链接是如何在内部完成的?
2条答案
按热度按时间bwitn5fc1#
不,bean id不需要与引用类中的字段名相同。注入基于类型,而不是spring中的id(除非您使用
@Qualifier
注解)。注入由spring ioc容器在运行时提供。
jq6vz3qz2#
id参数用于限定bean。因此它不需要与类名相同。您可以通过执行以下操作来引用bean:
如果您提供了两个相同类型的bean,则可以通过使用@qualifier注解引用其id来指定要自动关联的bean,这一点非常有用。如果您只有一个特定类型的bean,那么@qualifier是多余的,每当引用这个bean时,spring会自动连接它,而不需要知道它的id。