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

Как видно из названия, фабрика бинов - это ни что иное, как реализация шаблона проектирования 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.
Материалы, которые могут вас заинтересовать
- Spring. Базовое замещение методов при method injection
- Spring. Внедрение методов (Method injection)
- Spring. Работая с application context
- Spring. Теги на форме / Form Tags
- Spring: Контроллеры, основанные на аннотациях / Annotation Controller. Пример
- Spring SimpleFormController. Пример
- Пример Spring MVC
- Spring. Внедрение через конструктор / Constructor injection
- Spring. Внедрение через сеттер / Setter injection







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