Порядок ввода списка в контейнере Spring IoC
Предположим, я добавляю список некоторых компонентов:
@Autowired
List<SomeBean> beans;
Каков порядок внедрения по умолчанию в этой ситуации?
Я знаю о Ordered
интерфейс и @Order
аннотации, я спрашиваю только о поведении по умолчанию.
Я заметил, что в случае ручной регистрации бина:
context.register(SomeBeanA.class);
context.register(SomeBeanB.class);
context.register(SomeBeanC.class);
Эти бины вводятся в том же порядке, в котором я их зарегистрировал: 1 элемент в списке - SomeBeanA, 2 - SomeBeanB, 3 - SomeBeanC.
Есть ли гарантия такого поведения? Я имею в виду, могу ли я быть уверен, что это не изменится в следующем выпуске?
Благодарю.
1 ответ
Если вы хотите гарантировать порядок автоматического списка, я бы использовал интерфейс заказа или аннотацию.
Фактически, список все равно упорядочен, и каждый компонент, не объявляющий явный порядок, преобразуется в порядок по умолчанию. (По умолчанию это min integer, если я не ошибаюсь)
Посмотрите на этот класс: https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/annotation/AnnotationAwareOrderComparator.html