Порядок ввода списка в контейнере 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

Другие вопросы по тегам