Руководство по Spring. Жизненный цикл бинов.

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

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

Для управления созданием и уничтожением бина у нас есть параметры init-method и destroy-method.

Вызов функции инициализации

Интерфейс pro.springframework.beans.dactory.InitializingBean имеет только один метод – void afterPropertiesSet() throws Exception

InitializingBean

А вот пример класса, который имплементирует InitializingBean:

SimpleBean

Если мы конфигурируем бин с помощью XML-файла, то мы можем использовать атрибут init-method, чтобы определить, что именно будет происходить при создании экземпляра бина:

Класс SimpleBean.java

SimpleBeanJava

Конфигурационный файл configure-message-bean.xml

configure-message-bean_xml

Вызов функции деструкции (уничтожения)

Интерфейс org.springframework.beans.factory.DsiposableBean также имеет только один единственный метод

void destroy() throws Exception.

DisposableBean

Если же мы конфигурируем бин с помощью xml-файла, то мы должны использовать атрибут destroy-method для того, чтобы определить что именно будет происходить при уничтожении экземпляра бина.

Класс SimpleBean.java

SimpleBeanJava

Конфигурационный файл configure-message-bean.xml

configure-message-bean-xml

В общем случае не рекомендуется использовать InitializingBean и DisposableBean, так как конфигурирование с помощью XML-файла более удобно благодаря возможности иметь собственные методы.


Пример небольшого приложения:

Исходный код проекта можно скачать по ЭТОЙ ССЫЛКЕ.

Структура проекта

Класс Message.java

MessageInitDestroy

Класс MessageRunner.java

MessageRunnerInitDestroy

Конфигурационный файл message-bean.xml

message-bean-xml-init-destroy

Результат работы программы

messageRunnerInitDestroyResult

Если у Вас есть много бинов, и по одному методу инициализации и уничтожения, которые вы хотите использовать ко всем экземплярам бинов, то Вы может не прописать их для каждого бина отдельно, а объявить их следующим способом:

message-bean-xml-default-init-destroy

В этот раз мы изучили основы жизненного цикла бинов. Другие аспекты жизненного цикла мы рассмотрим в последующих статьях.