Spring IoC контейнер: обзор Bean
Контейнер Spring IoC управляет одним или несколькими компонентами (beans). Эти компоненты создаются с помощью метаданных конфигурации, которые вы предоставляете контейнеру (например, в форме определений XML <bean/>).
В самом контейнере эти определения bean-компонентов представлены в виде объектов BeanDefinition, которые содержат (среди прочего) следующие метаданные:
- Имя класса с указанием пакета: обычно это фактический класс реализации определяемого компонента.
- Элементы поведенческой конфигурации бина, которые определяют, как бин должен вести себя в контейнере (область действия, обратные вызовы жизненного цикла и т. д.).
- Ссылки на другие bean-компоненты, которые необходимы для его работы. Эти ссылки также называются соавторами (collaborators) или зависимостями (dependencies).
- Другие параметры конфигурации, устанавливаемые во вновь созданном объекте - например, ограничение размера пула или количество соединений, используемых в бине, который управляет пулом соединений.
Эти метаданные преобразуются в набор свойств, которые составляют каждое определение компонента.
- Class - класс
- Name - имя
- Scope - область применения
- Аргументы конструктора
- Свойства
- Режим автопривязки
- Режим ленивой инициализации
- Метод инициализации
- Метод разрушения
В дополнение к определениям бинов, которые содержат информацию о том, как создать конкретный бин, реализации ApplicationContext также позволяют регистрировать существующие объекты, которые создаются вне контейнера (пользователями). Это делается путем обращения к BeanFactory ApplicationContext через метод getBeanFactory(), который возвращает реализацию BeanFactory DefaultListableBeanFactory. DefaultListableBeanFactory поддерживает эту регистрацию с помощью методов registerSingleton(..) и registerBeanDefinition(..). Однако типичные приложения работают только с компонентами, определенными с помощью метаданных определения стандартных компонентов.
Метаданные компонента и предоставленные вручную экземпляры-синглтоны должны быть зарегистрированы как можно раньше, чтобы контейнер мог правильно рассуждать о них во время автоматической привязки (autowiring) и других этапов самоанализа. Хотя переопределение существующих метаданных и существующих синглтон экземпляров поддерживается в некоторой степени, регистрация новых bean-компонентов во время выполнения (одновременно с прямым доступом к фабрике) официально не поддерживается и может привести к исключениям одновременного доступа, несовместимому состоянию в контейнере bean-компонентов или обоим этим исключениям.
Читайте также:
- Обзор контейнера IoC Spring, метаданные конфигурации
- Обзор контейнера IoC Spring, создание контейнера
- Обзор контейнера IoC Spring
Комментарии
Отправить комментарий