Как Spring @Autowire
beans: byName или byType? Если это невозможно, это второе испытание, выполненное с использованием другого режима?
@Autowire режим по умолчанию
Ответ 1
Если аннотироваться с помощью @Autowired
, он будет вводить bean с типом соответствия (исключение будет выбрано, если имеется более одного типа). Чтобы указать имя, используйте аннотацию @Qualifier
.
Ответ 2
Пружины @Autowire
провода по типу. Для подключения по имени вы также можете использовать
@Resource(name = "id")
Ответ 3
Режим по умолчанию @Autowired
- byType
.
Ответ 4
Autowired
аннотация по методу переменной или сеттера эквивалентна атрибуту xml autowire="byType"
XML-атрибут autowire
является defaut как 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.
Ответ 5
Это не byName, byType, конструктор и автоопределение. Режим по умолчанию - no, т.е. по умолчанию автоматическое подключение отключено в традиционной конфигурации на основе XML.
Использование @Autowired annotation-
1) @Autowired по свойствам:
Когда @Autowired используется в свойствах, это эквивалентно автоматическому соединению byType в файле конфигурации.
2) @Autowired на установщиков свойств:
Когда @Autowired используется на установщиках, это также эквивалентно автоматическому соединению byType в файле конфигурации.
3) @Autowired на конструкторы:
Когда @Autowired используется в конструкторе bean-компонентов, это также эквивалентно автоматическому подключению по конструктору в файле конфигурации.
Используйте @Qualifier для конфликта в разрешении зависимостей
Как мы узнали, если мы используем автопроводку в режиме byType, и зависимости ищутся для типов классов свойств. Если такой тип не найден, выдается ошибка. Но что делать, если есть два или более bean-компонента для одного типа класса?
В этом случае Spring не сможет выбрать правильный bean для добавления в свойство, и вам нужно будет помочь контейнеру, используя квалификаторы.
Чтобы разрешить конкретный компонент с помощью квалификатора, нам нужно использовать аннотацию @Qualifier вместе с аннотацией @Autowired и передать имя компонента в параметре аннотации.