@ Автоматический режим по умолчанию - PullRequest
16 голосов
/ 14 апреля 2011

Как Spring @Autowire bean: byName или byType?Если одно невозможно, будет ли проведено второе испытание в другом режиме?

Ответы [ 5 ]

28 голосов
/ 14 апреля 2011

Если аннотировано @Autowired, оно будет вводить компонент с соответствующим типом (исключение будет выдано, если имеется более одного типа). Для указания имени используйте аннотацию @Qualifier.

3 голосов
/ 14 апреля 2011

пружины @Autowire провода по типу. Для проводки по имени вы также можете использовать

@Resource(name = "id")
1 голос
/ 29 января 2018

Autowired аннотация для метода переменных или сеттеров эквивалентна атрибуту xml autowire="byType"

Атрибут XML autowire по умолчанию равен no

"no": 

The traditional Spring default. No automagical wiring. Bean references
must be defined in the XML file via the <ref/> element (or "ref"
attribute). We recommend this in most cases as it makes documentation
more explicit.
1 голос
/ 04 июня 2013

Режим @Autowired по умолчанию: byType.

0 голосов
/ 13 мая 2019

Это не byName, byType, конструктор и автоопределение. Режим по умолчанию - no, т.е. по умолчанию автоматическое подключение отключено в традиционной конфигурации на основе XML.

Использование аннотации @Autowired-

1) @Autowired на свойства:

Когда @Autowired используется в свойствах, это эквивалентно автоматическому соединению byType в файле конфигурации.

2) @Autowired на установщиков свойства:

Когда @Autowired используется на установщиках, это также эквивалентно автоматическому соединению byType в файле конфигурации.

3) @Autowired для конструкторов:

Когда @Autowired используется в конструкторе компонента, он также эквивалентен автоматическому соединению конструктором в файле конфигурации.

Использовать @Qualifier для конфликта в разрешении зависимостей

Как мы узнали, если мы используем автопроводку в режиме byType, и зависимости ищутся для типов классов свойств. Если такой тип не найден, выдается ошибка. Но что делать, если есть два или более bean-компонента для одного и того же типа класса.

В этом случае Spring не сможет выбрать правильный боб для добавления в свойство, и вам нужно будет помочь контейнеру, используя квалификаторы.

Чтобы разрешить конкретный компонент с помощью квалификатора, нам нужно использовать аннотацию @Qualifier вместе с аннотацией @Autowired и передать имя компонента в параметре аннотации.

...