我们知道在 Spring 中,<bean> 有一个属性“primary”来指示如果有多个 bean 可用于自动装配到一个属性,则 bean 是第一个候选者。
但是现在我所有的 bean 定义都是使用 @Component/@Service 等声明的,我找不到可以用来声明 bean 的相应“主要”属性。
请告知我该如何实现这一点,谢谢。
我们知道在 Spring 中,<bean> 有一个属性“primary”来指示如果有多个 bean 可用于自动装配到一个属性,则 bean 是第一个候选者。
但是现在我所有的 bean 定义都是使用 @Component/@Service 等声明的,我找不到可以用来声明 bean 的相应“主要”属性。
请告知我该如何实现这一点,谢谢。
在 Spring 3.0 中,您使用@Primary
.
指示当多个候选者有资格自动装配单值依赖项时,应优先考虑 bean。如果候选中恰好存在一个“主”bean,则它将是自动装配的值。
可用于任何直接或间接使用 Component 注释的类或使用 Bean 注释的方法。
除非正在使用组件扫描,否则在类级别使用 Primary 无效。如果通过 XML 声明 Primary-annotated 类,则 Primary annotation 元数据将被忽略,
<bean primary="true|false"/>
而是受到尊重。
请参阅参考文档。
@Primary 注释仅在您使用 Spring 3.0 时才有效。
在 Spring 2.5 中,主要属性没有等效的注释。您必须使用 @Qualifier 注释来指定要注入的 bean。另一种选择是为相同目的定义您自己的限定符注释。
有关更多信息,请参阅文档。