0

Что такое метод autowire по умолчанию для Spring 3.2? так что допустим, что у меня есть этот классВесна 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 или будет выполняться по типу?

ответ

2

@Autowired - управляемый по типу, но он обеспечивает резервный улов, чтобы вставлять bean-компоненты по имени. Используйте @Resource, если вы хотите выполнить поиск и инъекцию bean-компонента на основе имени, альтернативно @Autowired вместе с @Qualifier также может работать, даже если он более полезен при группировке bean-компонентов. http://www.spiritwalker-jiang.com/archive/2013/02/11/Understanding-Autowired-annation-in-Spring

2

По умолчанию autowiring выполняется по типу. Вы можете использовать @Qualifier, чтобы указать имя для автоподготовки.

Когда в контейнере существует более одного компонента того же типа, весна будет возвращаться к названию. Поэтому, если имя поля совпадает с именем компонента, будет использоваться соответствующий компонент.

Для ответного совпадения имя компонента считается стандартным значением . Таким образом, вы можете определить bean-компонент с идентификатором «main» вместо вложенного элемента классификатора , что приведет к тому же результату сопоставления. Однако, хотя вы можете использовать это соглашение для ссылки на конкретные бонусы по имени, @Autowired в основном относится к инъекции с типом с необязательными семантическими классификаторами. Это означает, что значения классификатора, , даже с резервным именем имени компонента, всегда имеют сужение семантики в пределах набора совпадений типа; они не семантически выражают ссылку на уникальный идентификатор бобов. Хорошие значения классификатора являются «главными» или «EMEA» или «постоянными», выражающими характеристики конкретного компонента , которые не зависят от идентификатора компонента, который может быть автоматически генерируется в случае определения анонимного компонента, как в Предыдущий пример.

+0

Что такое резерв под Autowired? и как я могу установить стандартную методологию для @Autowired toName, а не byType? – user962206

+0

@ user962206 Я обновил ответ на ваш вопрос –

0

По типу. Чтобы сделать это по названию проводов, вы должны добавить аннотации @Qualifier

+0

Что такое резерв для @Autowired? – user962206

1

Он выполнит поиск по его типу. Если в одном и том же ApplicationContext есть несколько компонентов одного и того же типа, вы должны использовать @Qualifier, чтобы автообновить все эти компоненты по их именам.

0

bean name считается значением квалификатора по умолчанию, если он добавлен @Qualifier() к методу setter. для more

Смежные вопросы