Создание spring applicationcontext

Я смотрел, как Spring создает классы синглтона внутри компании.

Ожидание:

  1. Spring будет перебирать все соответствующие классы (упомянутые через XML)
  2. Создайте граф зависимостей для классов
  3. И создаст экземпляры как часть обхода указанного выше дерева.

Наблюдения:

  1. Spring прошел через все соответствующие классы (упомянутые через XML)
  2. Создайте карту className vs BeanInfo (метаданные о классе)
  3. Пройдите по всем классам один за другим и проверьте его конструктор. Если аргумент конструктора еще не создан, он сначала создает их, а затем, наконец, создает класс и добавляет его в список объектов сигелтона. (org.springframework.context.support.AbstractApplicationContext # finishBeanFactoryInitialization)

Код:

        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");

Вопрос:

Почему Spring не создает граф классов на первой итерации для более быстрой инициализации? Пожалуйста, дайте мне знать, если я что-то пропустил при чтении / отладке кода Spring.

Как вы думаете, почему создание графика будет быстрее?

lexicore 11.04.2018 13:16

Насколько я понимаю, скажем, из-за создания графа - были созданы две непересекающиеся структуры деревьев (самый простой сценарий): Плюсы: (Может ускорить обработку) 1. Мы можем использовать распараллеливание для создания экземпляров обоих деревьев. 2. Создание одиночных узлов снизу вверх. Итак, очень редкий шанс, что при создании узла мы когда-либо найдем какой-либо класс конструктора, который не был создан. Минусы: (Память) Для поддержки DAG может возникнуть проблема с памятью.

vidzi 11.04.2018 13:26

1. Что ж, это теоретически возможно. но ничто не запрещает параллельное создание без графа.

lexicore 11.04.2018 13:30

2. Не понимаю, насколько это актуально. Вы эффективно перемещаетесь по графику while, так или иначе, и bean-компоненты не создаются во второй раз. Так почему это имеет значение, в каком порядке они созданы?

lexicore 11.04.2018 13:31

Память для поддержания ДНЯ на несколько десятков бобов на самом деле не стоит упоминания.

lexicore 11.04.2018 13:33

Мне было бы интересно узнать, как Spring определяет циклы.

lexicore 11.04.2018 13:33
0
6
53
0

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