2010-01-04 44 views
6

我们知道在Spring中,<bean>有一个属性“primary”来表示一个bean是第一个候选者,如果有多个bean可用于自动装配属性。我不能使用注解来表示一个bean是一个主要的bean

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

请告诉我该如何做到这一点,谢谢。

回答

22

在Spring 3.0中,您使用@Primary

表示一个bean应给予优先 当多个候选 有资格自动装配一个 单值的依赖。如果在 候选者中确实存在 一个“主”豆,则它将是自动装配的 值。

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

除非使用组件扫描 ,否则在课堂级别使用小学生 将无效。如果通过XML声明了带主注释的 类,则主注释元数据将被忽略,并且 <bean primary="true|false"/>将被改为 。

请参阅ref docs

+0

谢谢我已升级到Spring 3.0,它现在工作正常。 – Matt 2010-01-06 03:29:42

+0

看起来像您的ref doc已经死亡。这可能会更好:http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Primary.html – 2015-02-05 00:06:29

+0

@jb。谢谢,修正 – skaffman 2015-02-05 01:57:48

4

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

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

查看docs了解更多信息。

相关问题