bean id 的名称和引用名称是否应该始终在 spring 中相同?
Should the name of bean id and the reference name be same always in springs?
我最近在研究 Springs 框架,刚想出了一个小问题。
假设如果我们有这样的 class:
class A
{
@Autowired
private B hello;
....
....
}
在 xml 文件中我定义如下:
<bean id="abc" class="org.eclipse.packageName.B"/>
创建的bean中的id名称和classA中提到的引用名称是否相同?
另一个问题是:如果我们@autowired a field.How 这个链接是在内部完成的,那么编译器如何知道 class 的 bean 在 xml 中被提及?
不,您的 bean id 不需要与引用中的字段名称相同 class。注入是基于类型而不是 Spring 中的 id(除非你使用 @Qualifier
注释)。
注入由 Spring IoC container 在运行时提供。
id 参数用于限定 bean。所以它不需要与 class 名称相同。您可以通过以下方式引用您的 bean:
@Autowired
@Qualifier("abc")
private B Hello
如果您提供两个相同类型的 bean,那么您可以通过使用 @Qualifier 注释引用它的 id 来指定要自动装配的 bean,这很有用。
如果您只有一个特定类型的 bean,那么 @Qualifier 是多余的,并且 Spring 将在引用该单个 bean 时自动自动装配它,而无需知道它的 id。
我最近在研究 Springs 框架,刚想出了一个小问题。 假设如果我们有这样的 class:
class A
{
@Autowired
private B hello;
....
....
}
在 xml 文件中我定义如下:
<bean id="abc" class="org.eclipse.packageName.B"/>
创建的bean中的id名称和classA中提到的引用名称是否相同?
另一个问题是:如果我们@autowired a field.How 这个链接是在内部完成的,那么编译器如何知道 class 的 bean 在 xml 中被提及?
不,您的 bean id 不需要与引用中的字段名称相同 class。注入是基于类型而不是 Spring 中的 id(除非你使用 @Qualifier
注释)。
注入由 Spring IoC container 在运行时提供。
id 参数用于限定 bean。所以它不需要与 class 名称相同。您可以通过以下方式引用您的 bean:
@Autowired
@Qualifier("abc")
private B Hello
如果您提供两个相同类型的 bean,那么您可以通过使用 @Qualifier 注释引用它的 id 来指定要自动装配的 bean,这很有用。 如果您只有一个特定类型的 bean,那么 @Qualifier 是多余的,并且 Spring 将在引用该单个 bean 时自动自动装配它,而无需知道它的 id。