Spring. Введение в BeanFactory

max аватар
127
Находится в разделах:

Как видно из названия, фабрика бинов - это ни что иное, как реализация шаблона проектирования Factory. Это класс, в чьи обязанности входит создание и уничтожение бинов. Однако, в отличие от многих реализаций паттерна Factory, который обычно выдает один тип объекта, фабрика бинов - это фабрика общего назначения, предназначенная для создания и уничтожения множества типов бинов. Предназначение бинов  немного шире, чем просто создание и доставка объектов приложения. Поскольку фабрика бинов знает многое об объекта внутри приложения, она способна создавать ассоциации между взаимодействующими объектами.  Это снимает бремя  конфигурации бина из самого себя и из бина клиента.  В результате, когда фабрика бинов выдает объекты, эти объекты полностью сконфигурированы и осведомлены об объектах, с которыми они сотрудничают и готовы к использованию. Более того, фабрика бинов также принимает участие в жизненном цикле бина,  делая вызовы определенных методов инициализации и деструкции, если эти методы определены.

В Spring определены несколько реализаций BeanFactory. Но наиболее часто используется org.springframework.beans.factory.xml.XmlBeanFactory, которая загружает бины, основанные на определениях, содержащихся в xml файле. 

Для создания XmlBeanFactory, необходимо передать объект org.springframework.core.io.Resource в конструктор. Объект Reousrce предоставит фабрике  XML. Spring поставляется  с подборкой реализаций Resource. Например, следующий сниппет использует FileSystemResource для создания XmlBeanFactory, чьи определения бина читаются из XML файла:

Простая строка кода говорит фабрике бинов, чтобы та прочитала определения бина из XML файла. Но фабрика еще не создает объекта. Бины "лениво" подгружаются (lazy loading) в фабрики бинов, но их объекты не создаются. Объекты бинов создаются лишь тогда, когда они действительно нужны. 

Для получения бина из фабрики, необходимо просто вызвать метод getBean(), передав ID , который необходимо получить.

Когда вызывается метод getBean(), фабрика создает объект бина и устанавливает его свойства, используя dependency injection (DI). С этого момента начинается жизнь бина внутри контейнера Spring.


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

Отправить комментарий

CAPTCHA
Чтобы оставить комментарий, введите пожалуйста код, изображенный на картинке
Image CAPTCHA
Введите символы, изображенные на картинке