Java 在springs中,bean id的名称和引用名称是否应该始终相同?
我最近正在深入研究Springs框架,刚刚提出了一个小问题。 假设我们有这样一个类:Java 在springs中,bean id的名称和引用名称是否应该始终相同?,java,spring,spring-bean,Java,Spring,Spring Bean,我最近正在深入研究Springs框架,刚刚提出了一个小问题。 假设我们有这样一个类: class A { @Autowired private B hello; .... .... } <bean id="abc" class="org.eclipse.packageName.B"/> 在xml文件中,我定义如下: class A { @Autowired private B hello; .... .... }
class A
{
@Autowired
private B hello;
....
....
}
<bean id="abc" class="org.eclipse.packageName.B"/>
在xml文件中,我定义如下:
class A
{
@Autowired
private B hello;
....
....
}
<bean id="abc" class="org.eclipse.packageName.B"/>
创建的bean中的id名称和类A中提到的引用名称是否相同
另一个问题是:如果我们@autowired一个字段,编译器如何知道这个类的bean在xml中被提及。这个链接是如何在内部完成的?不,bean id不需要与引用类中的字段名相同。注入基于类型,而不是Spring中的id(除非使用注释)
注入在运行时由提供。id参数用于限定bean。因此,它不需要与类名相同。您可以通过执行以下操作来引用bean:
@Autowired
@Qualifier("abc")
private B Hello
如果您提供了两个相同类型的bean,那么这非常有用,然后您可以通过使用@Qualifier注释引用其id来指定要自动关联的bean。
如果您只有一个特定类型的bean,@Qualifier是多余的,Spring将在引用该bean时自动连接该bean,而无需知道其id。您可以编写一个快速单元测试来验证?关于第二个问题,编译器不知道该bean,bean在运行时加载到应用程序上下文。springs中创建的两个bean的name属性是否相同?@mshikher“name”属性充当“id”的别名,因此它在应用程序上下文中必须全局唯一。