Главная » Spring » Жизненный цикл компонента Spring

0

В традиционных Java-приложениях жизненный цикл компонента довольно прост. Сначала компонент создается с помощью ключевого слова new (при этом, возможно, выполняется его десериализация), после чего он готов к использованию. Когда компонент перестает использоваться, он утилизируется сборщиком мусора и в конечном счете попадает в большой «битоприемник» на небесах.

Напротив, жизненный цикл компонента внутри контейнера Spring намного сложнее. Иметь представление о жизненном цикле компонента в контейнере Spring очень важно, потому что в этом случае появляются новые возможности управления процессом соз- дания компонента. Рисунок 1.5 иллюстрирует начальные этапы жиз- ненного цикла типичного компонента, которые он минует, прежде чем будет готов к использованию.

Как показано на рисунке, фабрика компонентов выполняет не- сколько подготовительных операций, перед тем как компонент бу- дет готов к использованию. Исследуем рис. 1.5 более детально.

1.   Spring создает экземпляр компонента.

2.   Spring внедряет значения и ссылки на компоненты в свойства данного компонента.

3.   Если компонент реализует интерфейс BeanNameAware, Spring пе- редает идентификатор компонента методу setBeanName().

4.   Если компонент реализует интерфейс BeanFactoryAware, Spring вызывает метод setBeanFactory(), передавая ему саму фабрику компонентов.

5.   Если компонент реализует интерфейс ApplicationContextAware, Spring вызывает метод setApplicationContext(), передавая ему ссылку на вмещающий контекст приложения.

6.   Если какие-либо из компонентов реализуют интерфейс Bean- PostProcessor, Spring вызывает их методы postProcessBeforeIniti alization().

7.   Если какие-либо из компонентов реализуют интерфейс InitializingBean, Spring вызывает их методы afterPropertiesSet(). Аналогично, если компонент был объявлен с атрибутом init- method, вызывается указанный метод инициализации.

8.   Если какие-либо из компонентов реализуют интерфейс BeanPostProcessor, Spring вызывает их методы postProcessAfterI nitialization().

9.   В этот момент компонент готов к использованию приложени- ем и будет сохраняться в контексте приложения, пока он не будет уничтожен.

10.   Если какие-либо из компонентов реализуют интерфейс DisposableBean, Spring вызывает их методы destroy(). Аналогич- но, если компонент был объявлен с атрибутом destroy-method, вызывается указанный метод.

Теперь вы знаете, как создавать и загружать контейнер Spring. Но пустой контейнер сам по себе не имеет практической пользы – он останется пустым, если в него ничего не поместить. Чтобы вос- пользоваться преимуществами Spring DI, необходимо связать между собой прикладные объекты в контейнере Spring. Подробнее о свя- зывании компонентов рассказывается в главе 2.

Но сначала познакомимся с современным ландшафтом Spring и посмотрим, из чего состоит фреймворк Spring Framework и что мо- гут предложить последние его версии.

Источник:   Уоллс К., Spring в действии. – М.: ДМК Пресс, 2013. – 752 с.: ил.

По теме:

  • Комментарии