我最近正在深入研究Springs框架,并提出了一个小问题。 假设我们有一个这样的类:
class A
{
@Autowired
private B hello;
....
....
}
并在xml文件中我定义如下:
<bean id="abc" class="org.eclipse.packageName.B"/>
创建bean的id名称和A类中提到的引用名称是否相同?
另一个问题是:如果我们@autowired一个字段,编译器如何知道xml中提到了这个类的bean。这个链接是如何在内部完成的?
答案 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。