Spring 3.2默认值为@Autowired
什么是Spring 3.2的默认自动装配方法?让我们说我有这个类Spring 3.2默认值为@Autowired
public class Saxophonist implements IPerform{
@Override
public String perform() {
return "I am A Saxophonist and I am Playing The : "+ saxophone;
}
private Instrument saxophone;
public Instrument getSaxophone() {
return saxophone;
}
@Autowired
public void setSaxophone(Instrument saxophone) {
this.saxophone = saxophone;
}
}
它会执行byName或将执行byType吗?
@Autowired是类型驱动的,但它提供了一个回退catch来按名称插入bean。 如果要根据名称执行bean查找和注入,则使用@Resource,或者@Autowired和@Qualifier一起使用也可以,即使它在分组bean时更有用。 http://www.spiritwalker-jiang.com/archive/2013/02/11/Understanding-Autowired-annation-in-Spring
默认情况下,自动装配按类型执行。您可以使用@Qualifier
指定自动装配的名称。
当容器中存在多个相同类型的bean时,Spring将回退到名称。因此,如果字段名称与bean名称匹配,则将使用相应的bean。
对于回退匹配,bean名称被视为默认限定符 的值。因此,您可以使用id“main”而不是 嵌套限定符元素来定义bean,从而得到相同的匹配结果。 但是,虽然您可以使用此惯例以名称引用特定的 bean,但@Autowired基本上是有关可选语义限定符的类型驱动注入 。这意味着即使使用bean名称回退,限定符值 也总是在该类型匹配集合内缩小语义 ;它们不会在语义上表示对唯一的bean标识的引用 。好的限定符值是“主要”或“EMEA”或“持久性”,表示特定的 组件的特性,它们独立于bean id,可能是 在匿名bean定义的情况下自动生成前面的例子是 。
它将通过它的类型执行查找。如果在同一个ApplicationContext中有多个相同类型的bean,则应使用@Qualifier
自动装载所有这些bean的名称。
Autowired的后备功能是什么?以及如何将@Autowired的默认方法设置为byName而不是byType? – user962206 2013-02-14 10:08:23
@ user962206我更新了回答您的问题 – 2013-02-14 10:14:10