2016-12-20 8 views
4

В нашей компании мы уведомили, что на разных серверах порядок бобов в сборке по-разному отличается, но на одной машине он всегда один и тот же (после каждого развертывания). Как весна или, может быть, classLoader устраивают бобы, которые эквивалентны? в нашем случае мы имеем 2 реализации некоторого интерфейса. И эти реализации вводятся в коллекцию в некотором месте. И на хосте 1 это всегда A, B в инъецированной коллекции, а на хосте 2 это всегда B, A.Весенний боб заказ в коллекции. Детерминированный?

Таким образом, он выглядит детерминированным, но отличается на разных машинах. Кто-нибудь может это подтвердить? От чего это зависит? Я не могу найти никакой информации об этом.

EDIT: Я перечислял файлы на HD без каких-либо определений с помощью ls -U и заметил, что на хосте 1 классы находятся в порядке A, B и на хосте 2 в порядке B, A. Может ли кто-нибудь подтвердить, что это причина? Таким образом, я буду искать, почему этот порядок отличается на разных машинах :) (.war с одинаковыми классами, загружаемыми непосредственно из репозитория nexus)

+0

Рассмотрите возможность размещения на существующих постах щедрости вместо того, чтобы повторять тот же вопрос. –

ответ

-1

Короче говоря, вы хотите узнать последовательность экземпляров весеннего компонента.

Существует множество алгоритмов, используемых во время создания экземпляра компонента, таких как разрешение зависимостей, явная конфигурация зависимостей (@DependsOn) и т. Д. Когда компонент не попадает ни в какое, если ... else, то он становится последовательностью инстанцирования по умолчанию. Таким образом, никто не гарантирует последовательность экземпляров bean-экземпляра по умолчанию, хотя мы можем подразумевать порядок создания экземпляров bean-компонентов через конфигурации.

Поскольку ни один документ не говорит о последовательности экземпляров весеннего компонента по умолчанию. Я считаю это произвольным, если вы выясните шаблон, который вы можете продолжить, но не делайте логической реализации в зависимости от этого шаблона, потому что он не гарантируется.

+0

Это устаревший код. Я не внедряю ничего, основываясь на этом порядке. Я просто хочу знать, как он работает. – xianoss

+0

«как это работает» означает для меня «стандартная последовательность создания экземпляра весеннего боба», и я объяснил это в ответ :) – Avinash

+0

, так что это «последовательность экземпляров по умолчанию» - это две бобы, которые копируются автосканированием, и никакие другие компоненты не имеют ссылки на них? Только одна ссылка - это коллекция с автоподдержкой с ними. – xianoss