8

我们知道在 Spring 中,<bean> 有一个属性“primary”来指示如果有多个 bean 可用于自动装配到一个属性,则 bean 是第一个候选者。

但是现在我所有的 bean 定义都是使用 @Component/@Service 等声明的,我找不到可以用来声明 bean 的相应“主要”属性。

请告知我该如何实现这一点,谢谢。

4

2 回答 2

27

在 Spring 3.0 中,您使用@Primary.

指示当多个候选者有资格自动装配单值依赖项时,应优先考虑 bean。如果候选中恰好存在一个“主”bean,则它将是自动装配的值。

可用于任何直接或间接使用 Component 注释的类或使用 Bean 注释的方法。

除非正在使用组件扫描,否则在类级别使用 Primary 无效。如果通过 XML 声明 Primary-annotated 类,则 Primary annotation 元数据将被忽略, <bean primary="true|false"/>而是受到尊重。

请参阅参考文档

于 2010-01-04T10:12:29.967 回答
4

@Primary 注释仅在您使用 Spring 3.0 时才有效。

在 Spring 2.5 中,主要属性没有等效的注释。您必须使用 @Qualifier 注释来指定要注入的 bean。另一种选择是为相同目的定义您自己的限定符注释。

有关更多信息,请参阅文档

于 2010-01-04T21:23:40.260 回答