自动装配优先级

时间:2011-03-24 10:08:19

标签: java spring configuration spring-mvc dependency-injection

<beans default-autowire="byType" />

表示如果不超过1个具有所需类型的bean,则bean的所有字段将自动注入依赖项。

我想知道在有多个所需类型的bean的情况下,是否有一种方法可以为自动布线定义某种优先级顺序(例如基于命名约定)。
提前谢谢。

编辑:我只是想补充一点,我不允许在我正在进行的项目中使用@Component和@Qualifier等注释。

1 个答案:

答案 0 :(得分:2)

没有,但你可以根据需要覆盖每个bean的这种行为,例如在必要时指定类似的东西:

<beans default-autowire="byType" >
    <bean id="..." autowire="byName">
        ....
    </bean>
</beans>

从使用<context:component-scan/>通过@Autowired自动装配bean时,从春季2.5开始,如果有多个相同类型的bean,您还可以在需要的地方添加@Qualifier来指定bean名称

如上所述,in the spring documentation指定自动装配有几种不同的方式:

  • 没有 - 不要自动装配,这是默认
  • byType - 属性类型必须与bean类型匹配,如果存在多个该类型的bean,则抛出异常
  • byName - bean名称必须与属性名称匹配
  • 构造函数 - 与byType基本相同,但对于构​​造函数,spring选择匹配最多的构造函数
  • 自动检测 - 与byType相同,除非没有默认构造函数,它回退到构造函数自动装配